⚡️(e2e) add workers to playwright with CI
We have added workers to playwright to run tests in parallel, this will help us to run tests faster. The tests run on a commun database, so to keep the tests stable between browsers, we created 3 different users to run the tests, it will avoid to have commun data stepping on each other.
This commit is contained in:
@@ -56,12 +56,34 @@
|
|||||||
"realmRoles": ["user"]
|
"realmRoles": ["user"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"username": "user-e2e",
|
"username": "user-e2e-chromium",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"credentials": [
|
"credentials": [
|
||||||
{
|
{
|
||||||
"type": "password",
|
"type": "password",
|
||||||
"value": "password-e2e"
|
"value": "password-e2e-chromium"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"realmRoles": ["user"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"username": "user-e2e-webkit",
|
||||||
|
"enabled": true,
|
||||||
|
"credentials": [
|
||||||
|
{
|
||||||
|
"type": "password",
|
||||||
|
"value": "password-e2e-webkit"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"realmRoles": ["user"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"username": "user-e2e-firefox",
|
||||||
|
"enabled": true,
|
||||||
|
"credentials": [
|
||||||
|
{
|
||||||
|
"type": "password",
|
||||||
|
"value": "password-e2e-firefox"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"realmRoles": ["user"]
|
"realmRoles": ["user"]
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
import { Page } from '@playwright/test';
|
import { Page } from '@playwright/test';
|
||||||
|
|
||||||
export const keyCloakSignIn = async (page: Page) => {
|
export const keyCloakSignIn = async (page: Page, browserName: string) => {
|
||||||
const title = await page.locator('h1').first().textContent({
|
const title = await page.locator('h1').first().textContent({
|
||||||
timeout: 5000,
|
timeout: 5000,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (title?.includes('Sign in to your account')) {
|
if (title?.includes('Sign in to your account')) {
|
||||||
await page.getByRole('textbox', { name: 'username' }).fill('user-e2e');
|
await page
|
||||||
await page.getByRole('textbox', { name: 'password' }).fill('password-e2e');
|
.getByRole('textbox', { name: 'username' })
|
||||||
|
.fill(`user-e2e-${browserName}`);
|
||||||
|
|
||||||
|
await page
|
||||||
|
.getByRole('textbox', { name: 'password' })
|
||||||
|
.fill(`password-e2e-${browserName}`);
|
||||||
|
|
||||||
await page.click('input[type="submit"]');
|
await page.click('input[type="submit"]');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { expect, test } from '@playwright/test';
|
|||||||
|
|
||||||
import { keyCloakSignIn } from './common';
|
import { keyCloakSignIn } from './common';
|
||||||
|
|
||||||
test.beforeEach(async ({ page }) => {
|
test.beforeEach(async ({ page, browserName }) => {
|
||||||
await page.goto('/');
|
await page.goto('/');
|
||||||
await keyCloakSignIn(page);
|
await keyCloakSignIn(page, browserName);
|
||||||
});
|
});
|
||||||
|
|
||||||
test.describe('Header', () => {
|
test.describe('Header', () => {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { expect, test } from '@playwright/test';
|
|||||||
|
|
||||||
import { keyCloakSignIn } from './common';
|
import { keyCloakSignIn } from './common';
|
||||||
|
|
||||||
test.beforeEach(async ({ page }) => {
|
test.beforeEach(async ({ page, browserName }) => {
|
||||||
await page.goto('/');
|
await page.goto('/');
|
||||||
await keyCloakSignIn(page);
|
await keyCloakSignIn(page, browserName);
|
||||||
});
|
});
|
||||||
|
|
||||||
test.describe('Language', () => {
|
test.describe('Language', () => {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { expect, test } from '@playwright/test';
|
|||||||
|
|
||||||
import { keyCloakSignIn } from './common';
|
import { keyCloakSignIn } from './common';
|
||||||
|
|
||||||
test.beforeEach(async ({ page }) => {
|
test.beforeEach(async ({ page, browserName }) => {
|
||||||
await page.goto('/');
|
await page.goto('/');
|
||||||
await keyCloakSignIn(page);
|
await keyCloakSignIn(page, browserName);
|
||||||
});
|
});
|
||||||
|
|
||||||
test.describe('Menu', () => {
|
test.describe('Menu', () => {
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import { waitForElementCount } from '../helpers';
|
|||||||
|
|
||||||
import { keyCloakSignIn } from './common';
|
import { keyCloakSignIn } from './common';
|
||||||
|
|
||||||
test.beforeEach(async ({ page }) => {
|
test.beforeEach(async ({ page, browserName }) => {
|
||||||
await page.goto('/');
|
await page.goto('/');
|
||||||
await keyCloakSignIn(page);
|
await keyCloakSignIn(page, browserName);
|
||||||
});
|
});
|
||||||
|
|
||||||
test.describe.configure({ mode: 'serial' });
|
test.describe.configure({ mode: 'serial' });
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export default defineConfig({
|
|||||||
/* Retry on CI only */
|
/* Retry on CI only */
|
||||||
retries: process.env.CI ? 2 : 0,
|
retries: process.env.CI ? 2 : 0,
|
||||||
/* Opt out of parallel tests on CI. */
|
/* Opt out of parallel tests on CI. */
|
||||||
workers: process.env.CI ? 1 : undefined,
|
workers: process.env.CI ? 3 : undefined,
|
||||||
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
||||||
reporter: [['html', { outputFolder: './report' }]],
|
reporter: [['html', { outputFolder: './report' }]],
|
||||||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||||
|
|||||||
Reference in New Issue
Block a user