diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68654bf18..463498d72 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,19 +13,53 @@ jobs: containers: [0, 1, 2, 3, 4] steps: - - name: Checkout 🛎 - uses: actions/checkout@master + - name: Checkout screen builder + uses: actions/checkout@v4 + - uses: actions-ecosystem/action-regex-match@v2 + id: install-vfe + with: + text: ${{ github.event.pull_request.body }} + regex: 'ci:vue-form-elements:([^\s]+)' + + - name: set-vfe-branch + run: | + export VFE_BRANCH='' + if [[ ${{ contains(github.event.pull_request.body, 'ci:next') }} ]]; then + export VFE_BRANCH=next + fi + if [[ ${{ steps.install-vfe.outputs.match != '' }} ]]; then + export VFE_BRANCH=${{ steps.install-vfe.outputs.group1 }} + fi + echo "VFE_BRANCH=${VFE_BRANCH}" >> $GITHUB_ENV + + - name: Checkout vue-form-elements + if: ${{ env.VFE_BRANCH != '' }} + uses: actions/checkout@v4 + with: + repository: ProcessMaker/vue-form-elements + path: vue-form-elements + ref: ${{ env.VFE_BRANCH }} + - name: Setup node env 🏗 uses: actions/setup-node@master with: node-version: 20 check-latest: true cache: 'npm' + + - name: Install vue-form-elements dependencies + if: ${{ env.VFE_BRANCH != '' }} + working-directory: vue-form-elements + run: npm ci && npm run build-bundle - name: Install dependencies 👨🏻‍💻 run: npm ci + - name: Link vue-form-elements + if: ${{ env.VFE_BRANCH != '' }} + run: npm link ./vue-form-elements + # - name: Run linter 👀 # run: npm run lint diff --git a/src/DataProvider.js b/src/DataProvider.js index dfbefe9b7..38c09ac2c 100644 --- a/src/DataProvider.js +++ b/src/DataProvider.js @@ -199,7 +199,7 @@ export default { !window.ProcessMaker.screen.cacheEnabled && !window.ProcessMaker.screen.cacheTimeout ) { - return this.postDataSource(dataSourceId, null, params); + return this.postDataSource(dataSourceId, null, params).then(r => [r, nonce]); } let url = `/requests/data_sources/${dataSourceId}/resources/${params.config.endpoint}/data`; url += this.authQueryString(); diff --git a/src/components/task.vue b/src/components/task.vue index 507ae99ab..6c67e675b 100644 --- a/src/components/task.vue +++ b/src/components/task.vue @@ -688,7 +688,7 @@ export default { }, processUpdated: _.debounce(function(data) { if ( - data.event === "ACTIVITY_ACTIVATED" + ['ACTIVITY_ACTIVATED', 'ACTIVITY_COMPLETED'].includes(data.event) && data.elementType === 'task' ) { if (!this.task.elementDestination?.type) { diff --git a/src/main.js b/src/main.js index 5766119d0..3d800b98c 100644 --- a/src/main.js +++ b/src/main.js @@ -38,6 +38,17 @@ Vue.component("Required", { template: '
* = Required
' }); +// Mock PmqlInput for test/standalone +Vue.component("PmqlInput", { + props: { + value: { + type: String, + default: "" + } + }, + template: '
PMQL: {{ value }}
' +}); + const store = new Vuex.Store({ modules: { globalErrorsModule, diff --git a/tests/e2e/fixtures/select_list_dependent.json b/tests/e2e/fixtures/select_list_dependent.json index 4fc8ebf4e..7640d1a8c 100644 --- a/tests/e2e/fixtures/select_list_dependent.json +++ b/tests/e2e/fixtures/select_list_dependent.json @@ -298,7 +298,7 @@ "jsonData": null, "renderAs": "dropdown", "editIndex": null, - "pmqlQuery": "data.country_id={{data.country}}", + "pmqlQuery": "data.country_id={{country}}", "dataSource": "dataConnector", "optionsList": [], "removeIndex": null, @@ -576,7 +576,7 @@ "jsonData": null, "renderAs": "dropdown", "editIndex": null, - "pmqlQuery": "data.city_id={{data.city}}", + "pmqlQuery": "data.city_id={{city}}", "dataSource": "dataConnector", "optionsList": [], "removeIndex": null, diff --git a/tests/e2e/specs/ComputedFieldsReadOnly.spec.js b/tests/e2e/specs/ComputedFieldsReadOnly.spec.js index 66306853f..72821ed72 100644 --- a/tests/e2e/specs/ComputedFieldsReadOnly.spec.js +++ b/tests/e2e/specs/ComputedFieldsReadOnly.spec.js @@ -3,6 +3,7 @@ import { waitUntilElementIsVisible } from "../support/utils"; describe("Computed fields", () => { it("The user should not be able to change a FormInput assigned to a computed property", () => { cy.visit("/"); + cy.openAcordeon("collapse-1"); // Add an input field cy.get("[data-cy=controls-FormInput]").drag("[data-cy=screen-drop-zone]", { position: "bottom" @@ -143,6 +144,7 @@ describe("Computed fields", () => { it("The user should not be able to change a FormTextArea assigned to a computed property", () => { cy.visit("/"); + cy.openAcordeon("collapse-1"); // Add an input field cy.get("[data-cy=controls-FormTextArea]").drag( "[data-cy=screen-drop-zone]", @@ -177,7 +179,7 @@ describe("Computed fields", () => { }); }); - it.only("The user should not be able to change a FormDatePicker assigned to a computed property", () => { + it("The user should not be able to change a FormDatePicker assigned to a computed property", () => { cy.visit("/"); cy.openAcordeon("collapse-1"); // Add an input field @@ -218,6 +220,7 @@ describe("Computed fields", () => { it("The user should not be able to change a FormSelectList assigned to a computed property", () => { cy.visit("/"); + cy.openAcordeon("collapse-1"); // Add an input field cy.get("[data-cy=controls-FormSelectList]").drag( "[data-cy=screen-drop-zone]", @@ -272,6 +275,7 @@ describe("Computed fields", () => { it("The user should not be able to change an input assigned to a sub property of a computed property", () => { cy.visit("/"); + cy.openAcordeon("collapse-1"); // Add an input field cy.get("[data-cy=controls-FormInput]").drag("[data-cy=screen-drop-zone]", { diff --git a/tests/e2e/specs/FOUR-6721_RAOS_People2.spec.js b/tests/e2e/specs/FOUR-6721_RAOS_People2.spec.js index 2bd2a7098..c2f6d0ddb 100644 --- a/tests/e2e/specs/FOUR-6721_RAOS_People2.spec.js +++ b/tests/e2e/specs/FOUR-6721_RAOS_People2.spec.js @@ -343,11 +343,6 @@ describe("FOUR-6721 RAOS 1.0.0 Screens", () => { it("Test performance of RAOS 1.0.0 People Screen render complete and start to get data sources", () => { cy.loadFromJson("RAOS_1.0.0_-_People_2.json", 7); - // Wait screen configuration to load - cy.wait("@DataSourceOne"); - cy.wait("@DataSourceTwo"); - cy.wait("@DataSourceTwo"); - // set initial data to test the screen cy.setPreviewDataInput(initialData); @@ -384,11 +379,6 @@ describe("FOUR-6721 RAOS 1.0.0 Screens", () => { it("Test performance of RAOS 1.0.0 People Screen render complete and wait for all data sources to load", () => { cy.loadFromJson("RAOS_1.0.0_-_People_2.json", 7); - // Wait screen configuration to load - cy.wait("@DataSourceOne"); - cy.wait("@DataSourceTwo"); - cy.wait("@DataSourceTwo"); - // set initial data to test the screen cy.setPreviewDataInput(initialData); diff --git a/tests/e2e/specs/LoopSelectList.spec.js b/tests/e2e/specs/LoopSelectList.spec.js index e5d13df8e..2208395a4 100644 --- a/tests/e2e/specs/LoopSelectList.spec.js +++ b/tests/e2e/specs/LoopSelectList.spec.js @@ -85,14 +85,13 @@ describe("Select List Cache", () => { }); cy.loadFromJson("loop_select_list.json", 0); - cy.wait("@getDataSource"); // designer call cy.get("[data-cy=mode-preview]").click(); cy.wait("@getDataSource"); cy.wait("@getDataSource"); cy.wait("@getDataSource"); cy.wait("@getDataSource"); cy.wait("@getDataSource"); - cy.get("@getDataSource.all").should("have.length", 6); + cy.get("@getDataSource.all").should("have.length", 5); }); it("Cached - Verify number of service calls for loop that contains a multiselect list", () => { @@ -105,15 +104,14 @@ describe("Select List Cache", () => { }); cy.loadFromJson("loop_select_list.json", 0); - cy.wait("@getDataSource"); // get data source from designer cy.wait(5000); cy.get("[data-cy=mode-preview]").click(); cy.wait("@getDataSource"); - cy.get("@getDataSource.all").should("have.length", 2); + cy.get("@getDataSource.all").should("have.length", 1); // testing cacheTimeout cy.wait(5000); cy.get("[data-cy=mode-preview]").click(); cy.wait("@getDataSource"); - cy.get("@getDataSource.all").should("have.length", 3); + cy.get("@getDataSource.all").should("have.length", 2); }); });