From 0a1461231bcfc7a57f6b82e0d1d0d5cf34adf581 Mon Sep 17 00:00:00 2001 From: "Jakub P." Date: Thu, 18 Jul 2024 12:39:04 +0200 Subject: [PATCH] chore: add linter to tests --- packages/e2e-tests/.eslintignore | 6 +++++ packages/e2e-tests/.eslintrc.json | 25 +++++++++++++++++++ .../fixtures/admin/delete-user-modal.js | 2 +- .../fixtures/admin/edit-role-page.js | 2 +- .../fixtures/admin/edit-user-page.js | 1 + packages/e2e-tests/fixtures/admin/index.js | 2 +- .../e2e-tests/fixtures/admin/users-page.js | 3 +++ .../e2e-tests/fixtures/applications-modal.js | 2 +- .../fixtures/apps/github/github-page.js | 5 ++-- .../fixtures/apps/github/github-popup.js | 15 +++++------ .../e2e-tests/fixtures/authenticated-page.js | 3 --- .../e2e-tests/fixtures/connections-page.js | 1 - .../e2e-tests/fixtures/executions-page.js | 1 - .../e2e-tests/fixtures/flow-editor-page.js | 1 - .../fixtures/postgres-client-config.js | 10 ++++---- .../e2e-tests/fixtures/user-interface-page.js | 1 - packages/e2e-tests/package.json | 3 ++- .../tests/admin/manage-roles.spec.js | 8 +++--- .../tests/admin/manage-users.spec.js | 2 +- .../tests/admin/role-conditions.spec.js | 2 +- .../executions/display-execution.spec.js | 2 +- .../tests/flow-editor/create-flow.spec.js | 2 +- 22 files changed, 66 insertions(+), 33 deletions(-) create mode 100644 packages/e2e-tests/.eslintignore create mode 100644 packages/e2e-tests/.eslintrc.json diff --git a/packages/e2e-tests/.eslintignore b/packages/e2e-tests/.eslintignore new file mode 100644 index 00000000..e2699178 --- /dev/null +++ b/packages/e2e-tests/.eslintignore @@ -0,0 +1,6 @@ +node_modules +build + +.eslintrc.js + +playwright-report/* \ No newline at end of file diff --git a/packages/e2e-tests/.eslintrc.json b/packages/e2e-tests/.eslintrc.json new file mode 100644 index 00000000..943e6da1 --- /dev/null +++ b/packages/e2e-tests/.eslintrc.json @@ -0,0 +1,25 @@ +{ + "root": true, + "env": { + "node": true, + "es6": true + }, + "extends": [ + "eslint:recommended", + "prettier" + ], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "rules": { + "semi": [ + 2, + "always" + ], + "indent": [ + "error", + 2 + ] + } +} \ No newline at end of file diff --git a/packages/e2e-tests/fixtures/admin/delete-user-modal.js b/packages/e2e-tests/fixtures/admin/delete-user-modal.js index 6082d0e3..8a4f33ed 100644 --- a/packages/e2e-tests/fixtures/admin/delete-user-modal.js +++ b/packages/e2e-tests/fixtures/admin/delete-user-modal.js @@ -14,6 +14,6 @@ export class DeleteUserModal { async close () { await this.page.click('body', { position: { x: 10, y: 10 } - }) + }); } } \ No newline at end of file diff --git a/packages/e2e-tests/fixtures/admin/edit-role-page.js b/packages/e2e-tests/fixtures/admin/edit-role-page.js index 9dd21dfe..9c9fec6b 100644 --- a/packages/e2e-tests/fixtures/admin/edit-role-page.js +++ b/packages/e2e-tests/fixtures/admin/edit-role-page.js @@ -1,4 +1,4 @@ -const { AdminCreateRolePage } = require('./create-role-page') +const { AdminCreateRolePage } = require('./create-role-page'); export class AdminEditRolePage extends AdminCreateRolePage { constructor (page) { diff --git a/packages/e2e-tests/fixtures/admin/edit-user-page.js b/packages/e2e-tests/fixtures/admin/edit-user-page.js index 9308294b..4bc3a1b6 100644 --- a/packages/e2e-tests/fixtures/admin/edit-user-page.js +++ b/packages/e2e-tests/fixtures/admin/edit-user-page.js @@ -23,6 +23,7 @@ export class AdminEditUserPage extends AuthenticatedPage { */ async waitForLoad(fullName) { return await this.page.waitForFunction((fullName) => { + // eslint-disable-next-line no-undef const el = document.querySelector("[data-test='full-name-input']"); return el && el.value === fullName; }, fullName); diff --git a/packages/e2e-tests/fixtures/admin/index.js b/packages/e2e-tests/fixtures/admin/index.js index 8c25fd7c..fe746243 100644 --- a/packages/e2e-tests/fixtures/admin/index.js +++ b/packages/e2e-tests/fixtures/admin/index.js @@ -25,5 +25,5 @@ export const adminFixtures = { adminCreateRolePage: async ({ page}, use) => { await use(new AdminCreateRolePage(page)); }, -} +}; diff --git a/packages/e2e-tests/fixtures/admin/users-page.js b/packages/e2e-tests/fixtures/admin/users-page.js index 4c96fd75..af6dbac3 100644 --- a/packages/e2e-tests/fixtures/admin/users-page.js +++ b/packages/e2e-tests/fixtures/admin/users-page.js @@ -87,6 +87,7 @@ export class AdminUsersPage extends AuthenticatedPage { await this.firstPageButton.click(); } + // eslint-disable-next-line no-constant-condition while (true) { if (await this.usersLoader.isVisible()) { await this.usersLoader.waitFor({ @@ -108,6 +109,7 @@ export class AdminUsersPage extends AuthenticatedPage { async getTotalRows() { return await this.page.evaluate(() => { + // eslint-disable-next-line no-undef const node = document.querySelector('[data-total-count]'); if (node) { const count = Number(node.dataset.totalCount); @@ -121,6 +123,7 @@ export class AdminUsersPage extends AuthenticatedPage { async getRowsPerPage() { return await this.page.evaluate(() => { + // eslint-disable-next-line no-undef const node = document.querySelector('[data-rows-per-page]'); if (node) { const count = Number(node.dataset.rowsPerPage); diff --git a/packages/e2e-tests/fixtures/applications-modal.js b/packages/e2e-tests/fixtures/applications-modal.js index 8833087f..f9bab969 100644 --- a/packages/e2e-tests/fixtures/applications-modal.js +++ b/packages/e2e-tests/fixtures/applications-modal.js @@ -25,7 +25,7 @@ export class ApplicationsModal extends BasePage { if (this.applications[link] === undefined) { throw { message: `Unknown link "${link}" passed to ApplicationsModal.selectLink` - } + }; } await this.searchInput.fill(link); await this.appListItem.first().click(); diff --git a/packages/e2e-tests/fixtures/apps/github/github-page.js b/packages/e2e-tests/fixtures/apps/github/github-page.js index f1a05d5f..d826c0d4 100644 --- a/packages/e2e-tests/fixtures/apps/github/github-page.js +++ b/packages/e2e-tests/fixtures/apps/github/github-page.js @@ -1,10 +1,11 @@ const { BasePage } = require('../../base-page'); const { AddGithubConnectionModal } = require('./add-github-connection-modal'); +const { expect } = require('@playwright/test'); export class GithubPage extends BasePage { constructor (page) { - super(page) + super(page); this.addConnectionButton = page.getByTestId('add-connection-button'); this.connectionsTab = page.getByTestId('connections-tab'); this.flowsTab = page.getByTestId('flows-tab'); @@ -38,7 +39,7 @@ export class GithubPage extends BasePage { await this.flowsTab.click(); await expect(this.flowsTab).toBeVisible(); } - return await this.flowRows.count() > 0 + return await this.flowRows.count() > 0; } async hasConnections () { diff --git a/packages/e2e-tests/fixtures/apps/github/github-popup.js b/packages/e2e-tests/fixtures/apps/github/github-popup.js index 0bdb8579..f1c8e2fe 100644 --- a/packages/e2e-tests/fixtures/apps/github/github-popup.js +++ b/packages/e2e-tests/fixtures/apps/github/github-popup.js @@ -1,4 +1,5 @@ const { BasePage } = require('../../base-page'); +const { expect } = require('@playwright/test'); export class GithubPopup extends BasePage { @@ -11,7 +12,7 @@ export class GithubPopup extends BasePage { } getPathname () { - const url = this.page.url() + const url = this.page.url(); try { return new URL(url).pathname; } catch (e) { @@ -34,17 +35,17 @@ export class GithubPopup extends BasePage { loginInput.click(); await loginInput.fill(process.env.GITHUB_USERNAME); const passwordInput = this.page.getByLabel('Password'); - passwordInput.click() + passwordInput.click(); await passwordInput.fill(process.env.GITHUB_PASSWORD); await this.page.getByRole('button', { name: 'Sign in' }).click(); // await this.page.waitForTimeout(2000); if (this.page.isClosed()) { - return + return; } // await this.page.waitForLoadState('networkidle', 30000); this.page.waitForEvent('load'); if (this.page.isClosed()) { - return + return; } await this.page.waitForURL(function (url) { const u = new URL(url); @@ -55,7 +56,7 @@ export class GithubPopup extends BasePage { } async handleAuthorize () { - if (this.page.isClosed()) { return } + if (this.page.isClosed()) { return; } const authorizeButton = this.page.getByRole( 'button', { name: 'Authorize' } @@ -69,7 +70,7 @@ export class GithubPopup extends BasePage { ) && ( u.searchParams.get('client_id') === null ); - }) + }); const passwordInput = this.page.getByLabel('Password'); if (await passwordInput.isVisible()) { await passwordInput.fill(process.env.GITHUB_PASSWORD); @@ -87,6 +88,6 @@ export class GithubPopup extends BasePage { }; } } - await this.page.waitForEvent('close') + await this.page.waitForEvent('close'); } } \ No newline at end of file diff --git a/packages/e2e-tests/fixtures/authenticated-page.js b/packages/e2e-tests/fixtures/authenticated-page.js index d0d653be..ceda6f6f 100644 --- a/packages/e2e-tests/fixtures/authenticated-page.js +++ b/packages/e2e-tests/fixtures/authenticated-page.js @@ -1,7 +1,4 @@ -const path = require('node:path'); -const { expect } = require('@playwright/test'); const { BasePage } = require('./base-page'); -const { LoginPage } = require('./login-page'); export class AuthenticatedPage extends BasePage { /** diff --git a/packages/e2e-tests/fixtures/connections-page.js b/packages/e2e-tests/fixtures/connections-page.js index ad2c7fc8..a0ef8c42 100644 --- a/packages/e2e-tests/fixtures/connections-page.js +++ b/packages/e2e-tests/fixtures/connections-page.js @@ -1,4 +1,3 @@ -const path = require('node:path'); const { AuthenticatedPage } = require('./authenticated-page'); export class ConnectionsPage extends AuthenticatedPage { diff --git a/packages/e2e-tests/fixtures/executions-page.js b/packages/e2e-tests/fixtures/executions-page.js index 4a00782a..41b673e3 100644 --- a/packages/e2e-tests/fixtures/executions-page.js +++ b/packages/e2e-tests/fixtures/executions-page.js @@ -1,4 +1,3 @@ -const path = require('node:path'); const { AuthenticatedPage } = require('./authenticated-page'); export class ExecutionsPage extends AuthenticatedPage { diff --git a/packages/e2e-tests/fixtures/flow-editor-page.js b/packages/e2e-tests/fixtures/flow-editor-page.js index d0383525..b7de2d98 100644 --- a/packages/e2e-tests/fixtures/flow-editor-page.js +++ b/packages/e2e-tests/fixtures/flow-editor-page.js @@ -1,4 +1,3 @@ -const path = require('node:path'); const { AuthenticatedPage } = require('./authenticated-page'); export class FlowEditorPage extends AuthenticatedPage { diff --git a/packages/e2e-tests/fixtures/postgres-client-config.js b/packages/e2e-tests/fixtures/postgres-client-config.js index 076b6b8f..8ebc831d 100644 --- a/packages/e2e-tests/fixtures/postgres-client-config.js +++ b/packages/e2e-tests/fixtures/postgres-client-config.js @@ -1,11 +1,11 @@ const { Client } = require('pg'); const client = new Client({ - host: process.env.POSTGRES_HOST, - user: process.env.POSTGRES_USERNAME, - port: process.env.POSTGRES_PORT, - password: process.env.POSTGRES_PASSWORD, - database: process.env.POSTGRES_DATABASE + host: process.env.POSTGRES_HOST, + user: process.env.POSTGRES_USERNAME, + port: process.env.POSTGRES_PORT, + password: process.env.POSTGRES_PASSWORD, + database: process.env.POSTGRES_DATABASE }); exports.client = client; diff --git a/packages/e2e-tests/fixtures/user-interface-page.js b/packages/e2e-tests/fixtures/user-interface-page.js index 119b92b1..6342af3a 100644 --- a/packages/e2e-tests/fixtures/user-interface-page.js +++ b/packages/e2e-tests/fixtures/user-interface-page.js @@ -1,4 +1,3 @@ -const path = require('node:path'); const { AuthenticatedPage } = require('./authenticated-page'); export class UserInterfacePage extends AuthenticatedPage { diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 1e731307..4bca4344 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -7,7 +7,8 @@ "scripts": { "start-mock-license-server": "node ./license-server-with-mock.js", "test": "playwright test", - "test:fast": "yarn test -j 90% --quiet --reporter null --ignore-snapshots -x" + "test:fast": "yarn test -j 90% --quiet --reporter null --ignore-snapshots -x", + "lint": "eslint ." }, "contributors": [ { diff --git a/packages/e2e-tests/tests/admin/manage-roles.spec.js b/packages/e2e-tests/tests/admin/manage-roles.spec.js index 7a4317d6..fa9eace1 100644 --- a/packages/e2e-tests/tests/admin/manage-roles.spec.js +++ b/packages/e2e-tests/tests/admin/manage-roles.spec.js @@ -17,7 +17,6 @@ test.describe('Role management page', () => { adminCreateRolePage, adminEditRolePage, adminRolesPage, - page, }) => { await test.step('Create a new role', async () => { await adminRolesPage.navigateTo(); @@ -126,12 +125,14 @@ test.describe('Role management page', () => { await adminCreateRolePage.isMounted(); const initScrollTop = await page.evaluate(() => { + // eslint-disable-next-line no-undef return document.documentElement.scrollTop; }); await page.mouse.move(400, 100); await page.mouse.click(400, 100); await page.mouse.wheel(200, 0); const updatedScrollTop = await page.evaluate(() => { + // eslint-disable-next-line no-undef return document.documentElement.scrollTop; }); await expect(initScrollTop).not.toBe(updatedScrollTop); @@ -144,11 +145,13 @@ test.describe('Role management page', () => { await adminEditRolePage.isMounted(); const initScrollTop = await page.evaluate(() => { + // eslint-disable-next-line no-undef return document.documentElement.scrollTop; }); await page.mouse.move(400, 100); await page.mouse.wheel(200, 0); const updatedScrollTop = await page.evaluate(() => { + // eslint-disable-next-line no-undef return document.documentElement.scrollTop; }); await expect(initScrollTop).not.toBe(updatedScrollTop); @@ -165,7 +168,6 @@ test.describe('Role management page', () => { adminUsersPage, adminCreateUserPage, adminEditUserPage, - page, }) => { await adminRolesPage.navigateTo(); await test.step('Create a new role', async () => { @@ -270,7 +272,6 @@ test.describe('Role management page', () => { adminRolesPage, adminUsersPage, adminCreateUserPage, - page, }) => { await adminRolesPage.navigateTo(); await test.step('Create a new role', async () => { @@ -429,6 +430,7 @@ test('Accessibility of role management page', async ({ await page.goto(url); await page.waitForTimeout(750); const isUnmounted = await page.evaluate(() => { + // eslint-disable-next-line no-undef const root = document.querySelector('#root'); if (root) { diff --git a/packages/e2e-tests/tests/admin/manage-users.spec.js b/packages/e2e-tests/tests/admin/manage-users.spec.js index fc3c324b..80ebfc07 100644 --- a/packages/e2e-tests/tests/admin/manage-users.spec.js +++ b/packages/e2e-tests/tests/admin/manage-users.spec.js @@ -98,7 +98,7 @@ test.describe('User management page', () => { await expect(userRow).not.toBeVisible(false); } ); - }); + }); test( 'Creating a user which has been deleted', diff --git a/packages/e2e-tests/tests/admin/role-conditions.spec.js b/packages/e2e-tests/tests/admin/role-conditions.spec.js index 6f69ad58..1b738406 100644 --- a/packages/e2e-tests/tests/admin/role-conditions.spec.js +++ b/packages/e2e-tests/tests/admin/role-conditions.spec.js @@ -51,7 +51,7 @@ test( const subjects = ['Connection', 'Execution', 'Flow']; for (let subject of subjects) { - const row = adminCreateRolePage.getSubjectRow(subject) + const row = adminCreateRolePage.getSubjectRow(subject); const modal = adminCreateRolePage.getRoleConditionsModal(subject); await adminCreateRolePage.clickPermissionSettings(row); await expect(modal.modal).toBeVisible(); diff --git a/packages/e2e-tests/tests/executions/display-execution.spec.js b/packages/e2e-tests/tests/executions/display-execution.spec.js index 8e1b4995..8de79dd7 100644 --- a/packages/e2e-tests/tests/executions/display-execution.spec.js +++ b/packages/e2e-tests/tests/executions/display-execution.spec.js @@ -2,7 +2,7 @@ const { test, expect } = require('../../fixtures/index'); // no execution data exists in an empty account test.describe.skip('Executions page', () => { - test.beforeEach(async ({ page, executionsPage }) => { + test.beforeEach(async ({ page }) => { await page.getByTestId('executions-page-drawer-link').click(); await page.getByTestId('execution-row').first().click(); diff --git a/packages/e2e-tests/tests/flow-editor/create-flow.spec.js b/packages/e2e-tests/tests/flow-editor/create-flow.spec.js index 363cad57..43d82861 100644 --- a/packages/e2e-tests/tests/flow-editor/create-flow.spec.js +++ b/packages/e2e-tests/tests/flow-editor/create-flow.spec.js @@ -6,7 +6,7 @@ test('Ensure creating a new flow works', async ({ page }) => { await expect(page).toHaveURL( /\/editor\/[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}/ ); -}) +}); test( 'Create a new flow with a Scheduler step then an Ntfy step',