diff --git a/packages/e2e-tests/fixtures/admin/application-settings-page.js b/packages/e2e-tests/fixtures/admin/application-settings-page.js index 03c6820b..69887240 100644 --- a/packages/e2e-tests/fixtures/admin/application-settings-page.js +++ b/packages/e2e-tests/fixtures/admin/application-settings-page.js @@ -40,7 +40,12 @@ export class AdminApplicationSettingsPage extends AuthenticatedPage { } async saveSettings() { - await this.saveButton.click(); + await Promise.all([ + this.page.waitForResponse( + (resp) => resp.url().includes('/config') && resp.status() === 200 + ), + this.saveButton.click(), + ]); } async expectOnlyOneSuccessSnackbarToBeVisible() { diff --git a/packages/e2e-tests/tests/admin/applications.spec.js b/packages/e2e-tests/tests/admin/applications.spec.js index 5e9de02f..53c194c4 100644 --- a/packages/e2e-tests/tests/admin/applications.spec.js +++ b/packages/e2e-tests/tests/admin/applications.spec.js @@ -126,7 +126,7 @@ test.describe('Admin Applications', () => { .getByRole('option') .filter({ hasText: 'Unnamed' }); - await expect(await existingConnection.count()).toBeGreaterThan(0); + await expect.poll(() => existingConnection.count()).toBeGreaterThan(0); await expect(newConnectionOption).toBeEnabled(); await expect(newConnectionOption).toHaveCount(1); await expect(newOAuthConnectionOption).toHaveCount(0); @@ -197,7 +197,7 @@ test.describe('Admin Applications', () => { .getByRole('option') .filter({ hasText: 'Unnamed' }); - await expect(await existingConnection.count()).toBeGreaterThan(0); + await expect.poll(() => existingConnection.count()).toBeGreaterThan(0); await expect(newConnectionOption).toHaveCount(0); await expect(newOAuthConnectionOption).toBeEnabled(); await expect(newOAuthConnectionOption).toHaveCount(1); @@ -266,7 +266,7 @@ test.describe('Admin Applications', () => { .getByRole('option') .filter({ hasText: 'Unnamed' }); - await expect(await existingConnection.count()).toBeGreaterThan(0); + await expect.poll(() => existingConnection.count()).toBeGreaterThan(0); await expect(newConnectionOption).toHaveCount(1); await expect(newOAuthConnectionOption).toBeEnabled(); await expect(newOAuthConnectionOption).toHaveCount(1); @@ -331,7 +331,7 @@ test.describe('Admin Applications', () => { .getByRole('option') .filter({ hasText: 'Unnamed' }); - await expect(await existingConnection.count()).toBeGreaterThan(0); + await expect.poll(() => existingConnection.count()).toBeGreaterThan(0); await expect(newConnectionOption).toHaveCount(0); await expect(newOAuthConnectionOption).toHaveCount(0); }); @@ -402,7 +402,7 @@ test.describe('Admin Applications', () => { .locator('.MuiAutocomplete-noOptions') .filter({ hasText: 'No options' }); - await expect(await existingConnection.count()).toBeGreaterThan(0); + await expect.poll(() => existingConnection.count()).toBeGreaterThan(0); await expect(noConnectionsOption).toHaveCount(0); await expect(newConnectionOption).toHaveCount(0); await expect(newOAuthConnectionOption).toHaveCount(0); diff --git a/packages/e2e-tests/tests/admin/manage-users.spec.js b/packages/e2e-tests/tests/admin/manage-users.spec.js index e62b6bb8..2887412c 100644 --- a/packages/e2e-tests/tests/admin/manage-users.spec.js +++ b/packages/e2e-tests/tests/admin/manage-users.spec.js @@ -88,7 +88,6 @@ test.describe('User management page', () => { adminCreateUserPage.seed(9100); const testUser = adminCreateUserPage.generateUser(); await test.step('Create the test user', async () => { - await adminUsersPage.navigateTo(); await adminUsersPage.createUserButton.click(); await adminCreateUserPage.fullNameInput.fill(testUser.fullName); await adminCreateUserPage.emailInput.fill(testUser.email); @@ -174,7 +173,6 @@ test.describe('User management page', () => { const user1 = adminCreateUserPage.generateUser(); const user2 = adminCreateUserPage.generateUser(); await test.step('Create the first user', async () => { - await adminUsersPage.navigateTo(); await adminUsersPage.createUserButton.click(); await adminCreateUserPage.fullNameInput.fill(user1.fullName); await adminCreateUserPage.emailInput.fill(user1.email); diff --git a/packages/e2e-tests/tests/user-invitation/invitation.spec.js b/packages/e2e-tests/tests/user-invitation/invitation.spec.js index 2035f808..89729bb2 100644 --- a/packages/e2e-tests/tests/user-invitation/invitation.spec.js +++ b/packages/e2e-tests/tests/user-invitation/invitation.spec.js @@ -3,82 +3,111 @@ const { pgPool } = require('../../fixtures/postgres-config'); const { DateTime } = require('luxon'); publicTest.describe('Accept invitation page', () => { - publicTest('should not be able to set the password if token is empty', async ({ acceptInvitationPage }) => { - await acceptInvitationPage.open(''); - await acceptInvitationPage.excpectSubmitButtonToBeDisabled(); - await acceptInvitationPage.fillPasswordField('something'); - await acceptInvitationPage.excpectSubmitButtonToBeDisabled(); - }); + publicTest( + 'should not be able to set the password if token is empty', + async ({ acceptInvitationPage }) => { + await acceptInvitationPage.open(''); + await acceptInvitationPage.excpectSubmitButtonToBeDisabled(); + await acceptInvitationPage.fillPasswordField('something'); + await acceptInvitationPage.excpectSubmitButtonToBeDisabled(); + } + ); - publicTest('should not be able to set the password if token is not in db', async ({ acceptInvitationPage }) => { - await acceptInvitationPage.open('abc'); - await acceptInvitationPage.acceptInvitation('something'); - await acceptInvitationPage.expectAlertToBeVisible(); - }); + publicTest( + 'should not be able to set the password if token is not in db', + async ({ acceptInvitationPage }) => { + await acceptInvitationPage.open('abc'); + await acceptInvitationPage.acceptInvitation('something'); + await acceptInvitationPage.expectAlertToBeVisible(); + } + ); publicTest.describe('Accept invitation page - users', () => { - const expiredTokenDate = DateTime.now().minus({ days: 3 }).toISO(); + const expiredTokenDate = DateTime.now().minus({ days: 4 }).toISO(); const token = (Math.random() + 1).toString(36).substring(2); - publicTest('should not be able to set the password if token is expired', async ({ acceptInvitationPage, adminCreateUserPage }) => { - adminCreateUserPage.seed(Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER)); - const user = adminCreateUserPage.generateUser(); + publicTest( + 'should not be able to set the password if token is expired', + async ({ acceptInvitationPage, adminCreateUserPage }) => { + adminCreateUserPage.seed( + Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER) + ); + const user = adminCreateUserPage.generateUser(); - const queryRole = { - text: 'SELECT * FROM roles WHERE name = $1', - values: ['Admin'] - }; - - try { - const queryRoleIdResult = await pgPool.query(queryRole); - expect(queryRoleIdResult.rowCount).toEqual(1); - - const insertUser = { - text: 'INSERT INTO users (email, full_name, role_id, status, invitation_token, invitation_token_sent_at) VALUES ($1, $2, $3, $4, $5, $6)', - values: [user.email, user.fullName, queryRoleIdResult.rows[0].id, 'invited', token, expiredTokenDate], + const queryRole = { + text: 'SELECT * FROM roles WHERE name = $1', + values: ['Admin'], }; - const insertUserResult = await pgPool.query(insertUser); - expect(insertUserResult.rowCount).toBe(1); - expect(insertUserResult.command).toBe('INSERT'); - } catch (err) { - console.error(err.message); - throw err; + try { + const queryRoleIdResult = await pgPool.query(queryRole); + expect(queryRoleIdResult.rowCount).toEqual(1); + + const insertUser = { + text: 'INSERT INTO users (email, full_name, role_id, status, invitation_token, invitation_token_sent_at) VALUES ($1, $2, $3, $4, $5, $6)', + values: [ + user.email, + user.fullName, + queryRoleIdResult.rows[0].id, + 'invited', + token, + expiredTokenDate, + ], + }; + + const insertUserResult = await pgPool.query(insertUser); + expect(insertUserResult.rowCount).toBe(1); + expect(insertUserResult.command).toBe('INSERT'); + } catch (err) { + console.error(err.message); + throw err; + } + await acceptInvitationPage.open(token); + await acceptInvitationPage.acceptInvitation('something'); + await acceptInvitationPage.expectAlertToBeVisible(); } - await acceptInvitationPage.open(token); - await acceptInvitationPage.acceptInvitation('something'); - await acceptInvitationPage.expectAlertToBeVisible(); - }); + ); - publicTest('should not be able to accept invitation if user was soft deleted', async ({ acceptInvitationPage, adminCreateUserPage }) => { - const dateNow = DateTime.now().toISO(); - const user = adminCreateUserPage.generateUser(); + publicTest( + 'should not be able to accept invitation if user was soft deleted', + async ({ acceptInvitationPage, adminCreateUserPage }) => { + const dateNow = DateTime.now().toISO(); + const user = adminCreateUserPage.generateUser(); - const queryRole = { - text: 'SELECT * FROM roles WHERE name = $1', - values: ['Admin'] - }; - - try { - const queryRoleIdResult = await pgPool.query(queryRole); - expect(queryRoleIdResult.rowCount).toEqual(1); - - const insertUser = { - text: 'INSERT INTO users (email, full_name, deleted_at, role_id, status, invitation_token, invitation_token_sent_at) VALUES ($1, $2, $3, $4, $5, $6, $7)', - values: [user.email, user.fullName, dateNow, queryRoleIdResult.rows[0].id, 'invited', token, dateNow], + const queryRole = { + text: 'SELECT * FROM roles WHERE name = $1', + values: ['Admin'], }; - const insertUserResult = await pgPool.query(insertUser); - expect(insertUserResult.rowCount).toBe(1); - expect(insertUserResult.command).toBe('INSERT'); - } catch (err) { - console.error(err.message); - throw err; - } + try { + const queryRoleIdResult = await pgPool.query(queryRole); + expect(queryRoleIdResult.rowCount).toEqual(1); - await acceptInvitationPage.open(token); - await acceptInvitationPage.acceptInvitation('something'); - await acceptInvitationPage.expectAlertToBeVisible(); - }); + const insertUser = { + text: 'INSERT INTO users (email, full_name, deleted_at, role_id, status, invitation_token, invitation_token_sent_at) VALUES ($1, $2, $3, $4, $5, $6, $7)', + values: [ + user.email, + user.fullName, + dateNow, + queryRoleIdResult.rows[0].id, + 'invited', + token, + dateNow, + ], + }; + + const insertUserResult = await pgPool.query(insertUser); + expect(insertUserResult.rowCount).toBe(1); + expect(insertUserResult.command).toBe('INSERT'); + } catch (err) { + console.error(err.message); + throw err; + } + + await acceptInvitationPage.open(token); + await acceptInvitationPage.acceptInvitation('something'); + await acceptInvitationPage.expectAlertToBeVisible(); + } + ); }); });