From bd0b5b7b2d09438363dedf0ca02c468e7f78ccd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Wed, 14 Jan 2026 15:39:19 -0400 Subject: [PATCH 1/5] FOUR-28401 Issue Identified with Parallel Task Redirect Behavior --- src/components/task.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/task.vue b/src/components/task.vue index 76365bc0..f797135a 100644 --- a/src/components/task.vue +++ b/src/components/task.vue @@ -887,7 +887,10 @@ export default { * @param {Object} data - The event data containing the tokenId of the task. */ async handleRedirectToTask(data) { - if (data?.params[0]?.tokenId) { + if ( + data?.params[0]?.tokenId && + this.task.user?.id === data.params[0]?.userId + ) { this.loadingTask = true; // Check if interstitial tasks are allowed for this task. if (this.task && !(this.task.allow_interstitial || this.isSameUser(this.task, data))) { From f30535e84ccf6ec4a4771784f6c32d1e03cdf416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Thu, 15 Jan 2026 13:49:01 -0400 Subject: [PATCH 2/5] FOUR-28401 Issue Identified with Parallel Task Redirect Behavior - Fix test 1 --- tests/e2e/specs/Task.spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/e2e/specs/Task.spec.js b/tests/e2e/specs/Task.spec.js index d086b2c6..2e1aad18 100644 --- a/tests/e2e/specs/Task.spec.js +++ b/tests/e2e/specs/Task.spec.js @@ -916,6 +916,7 @@ describe("Task component", () => { completed_at: moment().toISOString(), due_at: moment().add(1, "day").toISOString(), user: { + id: 1, avatar: "", fullname: "Assigned User" }, From 2855e7116f5728882968c9d20b10cc73722e00a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Thu, 15 Jan 2026 17:24:52 -0400 Subject: [PATCH 3/5] FOUR-28401 Issue Identified with Parallel Task Redirect Behavior - Fix test 2 --- src/components/task.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/task.vue b/src/components/task.vue index f797135a..8bc3fd39 100644 --- a/src/components/task.vue +++ b/src/components/task.vue @@ -888,8 +888,9 @@ export default { */ async handleRedirectToTask(data) { if ( - data?.params[0]?.tokenId && - this.task.user?.id === data.params[0]?.userId + (data?.params[0]?.tokenId && + this.task.user?.id === data.params[0]?.userId) || + this.task.elementDestination.type === 'taskSource' ) { this.loadingTask = true; // Check if interstitial tasks are allowed for this task. From 4c426f76114db2cee2ee66222d79a5669c9f88de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Thu, 15 Jan 2026 17:37:42 -0400 Subject: [PATCH 4/5] FOUR-28401 Issue Identified with Parallel Task Redirect Behavior - Fix test 3 --- src/components/task.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/task.vue b/src/components/task.vue index 8bc3fd39..71febef6 100644 --- a/src/components/task.vue +++ b/src/components/task.vue @@ -890,7 +890,7 @@ export default { if ( (data?.params[0]?.tokenId && this.task.user?.id === data.params[0]?.userId) || - this.task.elementDestination.type === 'taskSource' + this.task.elementDestination?.type === 'taskSource' ) { this.loadingTask = true; // Check if interstitial tasks are allowed for this task. From 8b9c9f94b92452bb313d16ca3fd27b565fabe520 Mon Sep 17 00:00:00 2001 From: Eleazar Resendez Date: Fri, 16 Jan 2026 10:49:51 -0600 Subject: [PATCH 5/5] test(e2e): fix select list selectors after vue-form-elements name change --- tests/e2e/specs/ComplexScreen.spec.js | 12 +++++++++--- tests/e2e/specs/SelectListWatcher.spec.js | 4 ++-- tests/e2e/specs/SingleSelectWithInvalidValue.spec.js | 6 +++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/tests/e2e/specs/ComplexScreen.spec.js b/tests/e2e/specs/ComplexScreen.spec.js index f7c50f7e..551f4589 100644 --- a/tests/e2e/specs/ComplexScreen.spec.js +++ b/tests/e2e/specs/ComplexScreen.spec.js @@ -761,9 +761,15 @@ describe("Complex screen", () => { cy.get("[data-cy=preview-content] [name=form_checkbox_6]").should( "be.checked" ); - cy.get("[data-cy=preview-content] [name=form_select_list_3]").eq(1).click(); - cy.get("[data-cy=preview-content] [name=form_select_list_4]").eq(1).click(); // Select b - cy.get("[data-cy=preview-content] [name=form_select_list_4]").eq(2).click(); // Select c + cy.get( + '[data-cy=preview-content] [id^="form_select_list_3-b-"]' + ).click(); + cy.get( + '[data-cy=preview-content] [id^="form_select_list_4-b-"]' + ).click(); // Select b + cy.get( + '[data-cy=preview-content] [id^="form_select_list_4-c-"]' + ).click(); // Select c // record list - complete new fields cy.get( "[data-cy=preview-content] [data-cy=screen-field-form_record_list_1] [data-cy=edit-row]" diff --git a/tests/e2e/specs/SelectListWatcher.spec.js b/tests/e2e/specs/SelectListWatcher.spec.js index 7de52ce7..cbab482c 100644 --- a/tests/e2e/specs/SelectListWatcher.spec.js +++ b/tests/e2e/specs/SelectListWatcher.spec.js @@ -51,7 +51,7 @@ describe("SelectList - Watcher", () => { // Select "John" option in radio buttons "form_select_list_2" cy.get( - "[data-cy=preview-content] [name=form_select_list_2][value=John]" + '[data-cy=preview-content] [id^="form_select_list_2-John-"]' ).click(); // Select "Mary" option in select list "form_select_list_3" @@ -78,7 +78,7 @@ describe("SelectList - Watcher", () => { // Select "John" option in radio buttons "form_select_list_2" cy.get( - "[data-cy=preview-content] [name=form_select_list_2][value=John]" + '[data-cy=preview-content] [id^="form_select_list_2-John-"]' ).click(); // Select "Mary" option in select list "form_select_list_3" diff --git a/tests/e2e/specs/SingleSelectWithInvalidValue.spec.js b/tests/e2e/specs/SingleSelectWithInvalidValue.spec.js index 684c800d..18569070 100644 --- a/tests/e2e/specs/SingleSelectWithInvalidValue.spec.js +++ b/tests/e2e/specs/SingleSelectWithInvalidValue.spec.js @@ -23,9 +23,9 @@ describe("single select with invalid initial value", () => { cy.setPreviewDataInput({ person: [] }); cy.get("[data-cy=mode-preview]").click(); - cy.get("[data-cy=preview-content] [name=person]").eq(0).click(); - cy.get("[data-cy=preview-content] [name=person]").eq(1).click(); - cy.get("[data-cy=preview-content] [name=person]").eq(0).click(); + cy.get('[data-cy=preview-content] [id^="person-one-"]').click(); + cy.get('[data-cy=preview-content] [id^="person-two-"]').click(); + cy.get('[data-cy=preview-content] [id^="person-one-"]').click(); // Check the data of the screen cy.assertPreviewData({