From de088bfcf88a5f3a7f82192022cb20f2e1361013 Mon Sep 17 00:00:00 2001 From: oleg Date: Wed, 10 Jan 2024 12:35:47 +0100 Subject: [PATCH] ci: Update Cypress & increase amount of e2e containers (#8282) Signed-off-by: Oleg Ivaniv --- .github/workflows/e2e-reusable.yml | 2 +- cypress/e2e/29-templates.cy.ts | 4 +++ cypress/e2e/5-ndv.cy.ts | 8 ++++-- cypress/pages/workflow.ts | 5 ++-- package.json | 4 +-- pnpm-lock.yaml | 44 +++++++++++++----------------- 6 files changed, 34 insertions(+), 33 deletions(-) diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index 5d5bbfb11d..597653a5a6 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -40,7 +40,7 @@ on: containers: description: 'Number of containers to run tests in.' required: false - default: '[1, 2, 3, 4, 5, 6, 7, 8]' + default: '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]' type: string pr_number: description: 'PR number to run tests for.' diff --git a/cypress/e2e/29-templates.cy.ts b/cypress/e2e/29-templates.cy.ts index 3eab7d0d8f..841cb59e22 100644 --- a/cypress/e2e/29-templates.cy.ts +++ b/cypress/e2e/29-templates.cy.ts @@ -37,6 +37,10 @@ describe('Templates', () => { it('should save template id with the workflow', () => { cy.visit(templatesPage.url); + cy.intercept('GET', '**/api/templates/**').as('loadApi'); + cy.get('.el-skeleton.n8n-loading').should('not.exist'); + templatesPage.getters.firstTemplateCard().should('exist'); + cy.wait('@loadApi'); templatesPage.getters.firstTemplateCard().click(); cy.url().should('include', '/templates/'); diff --git a/cypress/e2e/5-ndv.cy.ts b/cypress/e2e/5-ndv.cy.ts index 3899b1269a..4fc69f8fde 100644 --- a/cypress/e2e/5-ndv.cy.ts +++ b/cypress/e2e/5-ndv.cy.ts @@ -71,10 +71,10 @@ describe('NDV', () => { workflowPage.actions.addNodeToCanvas('Manual'); workflowPage.actions.addNodeToCanvas('Airtable', true, true, 'Search records'); ndv.getters.container().should('be.visible'); - // cy.get('.has-issues').should('have.length', 0); + cy.get('.has-issues').should('have.length', 0); ndv.getters.parameterInput('table').find('input').eq(1).focus().blur(); ndv.getters.parameterInput('base').find('input').eq(1).focus().blur(); - cy.get('.has-issues').should('have.length', 0); + cy.get('.has-issues').should('have.length', 2); ndv.getters.backToCanvas().click(); workflowPage.actions.openNode('Airtable'); cy.get('.has-issues').should('have.length', 2); @@ -306,7 +306,7 @@ describe('NDV', () => { ndv.getters.parameterInput('remoteOptions').click(); - ndv.getters.parameterInputIssues('remoteOptions').realHover(); + ndv.getters.parameterInputIssues('remoteOptions').realHover({ scrollBehavior: false}); // Remote options dropdown should not be visible ndv.getters.parameterInput('remoteOptions').find('.el-select').should('not.exist'); }); @@ -365,6 +365,8 @@ describe('NDV', () => { ndv.actions.openCodeEditorFullscreen(); ndv.getters.codeEditorFullscreen().type('{selectall}').type('{backspace}').type('foo()'); + ndv.getters.codeEditorFullscreen().should('contain.text', 'foo()'); + cy.wait(200); ndv.getters.codeEditorDialog().find('.el-dialog__close').click(); ndv.getters.parameterInput('jsCode').get('.cm-content').should('contain.text', 'foo()'); }); diff --git a/cypress/pages/workflow.ts b/cypress/pages/workflow.ts index 853877ed0f..f3994b4b42 100644 --- a/cypress/pages/workflow.ts +++ b/cypress/pages/workflow.ts @@ -174,14 +174,15 @@ export class WorkflowPage extends BasePage { this.getters.nodeCreatorSearchBar().type(nodeDisplayName); this.getters.nodeCreatorSearchBar().type('{enter}'); - cy.wait(500); cy.get('body').then((body) => { if (body.find('[data-test-id=node-creator]').length > 0) { if (action) { cy.contains(action).click(); } else { // Select the first action - cy.get('[data-keyboard-nav-type="action"]').eq(0).click(); + if (body.find('[data-keyboard-nav-type="action"]').length > 0) { + cy.get('[data-keyboard-nav-type="action"]').eq(0).click(); + } } } }); diff --git a/package.json b/package.json index 6233ff77a6..f999e3628b 100644 --- a/package.json +++ b/package.json @@ -48,9 +48,9 @@ "@types/supertest": "^2.0.12", "@vitest/coverage-v8": "^1.1.0", "cross-env": "^7.0.3", - "cypress": "^12.17.2", + "cypress": "^13.6.2", "cypress-otp": "^1.0.3", - "cypress-real-events": "^1.9.1", + "cypress-real-events": "^1.11.0", "jest": "^29.6.2", "jest-environment-jsdom": "^29.6.2", "jest-expect-message": "^1.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbd5d92a60..64f76a82a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,14 +67,14 @@ importers: specifier: ^7.0.3 version: 7.0.3 cypress: - specifier: ^12.17.2 - version: 12.17.2 + specifier: ^13.6.2 + version: 13.6.2 cypress-otp: specifier: ^1.0.3 version: 1.0.3 cypress-real-events: - specifier: ^1.9.1 - version: 1.9.1(cypress@12.17.2) + specifier: ^1.11.0 + version: 1.11.0(cypress@13.6.2) jest: specifier: ^29.6.2 version: 29.6.2 @@ -4781,8 +4781,8 @@ packages: y18n: 5.0.8 dev: false - /@cypress/request@2.88.11: - resolution: {integrity: sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==} + /@cypress/request@3.0.1: + resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} engines: {node: '>= 6'} dependencies: aws-sign2: 0.7.0 @@ -4798,7 +4798,7 @@ packages: json-stringify-safe: 5.0.1 mime-types: 2.1.35 performance-now: 2.1.0 - qs: 6.10.5 + qs: 6.10.4 safe-buffer: 5.2.1 tough-cookie: 4.1.3 tunnel-agent: 0.6.0 @@ -13920,21 +13920,20 @@ packages: otplib: 12.0.1 dev: true - /cypress-real-events@1.9.1(cypress@12.17.2): - resolution: {integrity: sha512-eDYW6NagNs8+68ugyPbB6U1aIsYF0E0WHR6upXo0PbTXZNqBNc2s9Y0u/N+pbU9HpFh+krl6iMhoz/ENlYBdCg==} + /cypress-real-events@1.11.0(cypress@13.6.2): + resolution: {integrity: sha512-4LXVRsyq+xBh5TmlEyO1ojtBXtN7xw720Pwb9rEE9rkJuXmeH3VyoR1GGayMGr+Itqf11eEjfDewtDmcx6PWPQ==} peerDependencies: - cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x + cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x dependencies: - cypress: 12.17.2 - prettier: 3.1.0 + cypress: 13.6.2 dev: true - /cypress@12.17.2: - resolution: {integrity: sha512-hxWAaWbqQBzzMuadSGSuQg5PDvIGOovm6xm0hIfpCVcORsCAj/gF2p0EvfnJ4f+jK2PCiDgP6D2eeE9/FK4Mjg==} - engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} + /cypress@13.6.2: + resolution: {integrity: sha512-TW3bGdPU4BrfvMQYv1z3oMqj71YI4AlgJgnrycicmPZAXtvywVFZW9DAToshO65D97rCWfG/kqMFsYB6Kp91gQ==} + engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} hasBin: true dependencies: - '@cypress/request': 2.88.11 + '@cypress/request': 3.0.1 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) '@types/node': 18.16.16 '@types/sinonjs__fake-timers': 8.1.1 @@ -13969,6 +13968,7 @@ packages: minimist: 1.2.8 ospath: 1.2.2 pretty-bytes: 5.6.0 + process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 semver: 7.5.4 @@ -16045,7 +16045,7 @@ packages: engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 - signal-exit: 4.0.2 + signal-exit: 4.1.0 dev: true /forever-agent@0.6.1: @@ -22873,10 +22873,9 @@ packages: vue: 3.3.4 dev: false - /qs@6.10.5: - resolution: {integrity: sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==} + /qs@6.10.4: + resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} engines: {node: '>=0.6'} - deprecated: when using stringify with arrayFormat comma, `[]` is appended on single-item arrays. Upgrade to v6.11.0 or downgrade to v6.10.4 to fix. dependencies: side-channel: 1.0.4 dev: true @@ -24016,11 +24015,6 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - dev: true - /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'}