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..dbd2dab38 100644
--- a/src/components/task.vue
+++ b/src/components/task.vue
@@ -543,6 +543,10 @@ export default {
this.task.interstitial_screen['_interstitial'] = true;
this.screen = this.task.interstitial_screen;
}
+ if (this.task.bpmn_tag_name === 'manualTask') {
+ this.checkTaskStatus();
+ this.reload();
+ }
},
onUpdate(data) {
this.$emit('input', data);
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);
});
});