Playwright tests - stage 1 - login with email and password test (#8988)
Scenario: https://github.com/twentyhq/twenty/issues/8469#issuecomment-2471420099 To launch this test, `yarn playwright test --project Authentication` must be used in `packages/twenty-e2e-testing` directory (for some reason when launching this test from IDE, be Webstorm or VSCode, it won't fetch the data from .env)
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
# Note that provide always without trailing forward slash to have expected behaviour
|
# Note that provide always without trailing forward slash to have expected behaviour
|
||||||
FRONTEND_BASE_URL=http://localhost:3001
|
FRONTEND_BASE_URL=http://app.localhost:3001
|
||||||
CI_DEFAULT_BASE_URL=https://demo.twenty.com
|
CI_DEFAULT_BASE_URL=https://demo.twenty.com
|
||||||
DEFAULT_LOGIN=tim@apple.dev
|
DEFAULT_LOGIN=tim@apple.dev
|
||||||
NEW_WORKSPACE_LOGIN=test@apple.dev
|
NEW_WORKSPACE_LOGIN=test@apple.dev
|
||||||
|
|||||||
@ -10,7 +10,7 @@ export class LoginPage {
|
|||||||
private readonly forgotPasswordButton: Locator;
|
private readonly forgotPasswordButton: Locator;
|
||||||
private readonly passwordField: Locator;
|
private readonly passwordField: Locator;
|
||||||
private readonly revealPasswordButton: Locator;
|
private readonly revealPasswordButton: Locator;
|
||||||
private readonly signInButton: Locator;
|
readonly signInButton: Locator;
|
||||||
private readonly signUpButton: Locator;
|
private readonly signUpButton: Locator;
|
||||||
private readonly previewImageButton: Locator;
|
private readonly previewImageButton: Locator;
|
||||||
private readonly uploadImageButton: Locator;
|
private readonly uploadImageButton: Locator;
|
||||||
|
|||||||
@ -16,12 +16,12 @@ export default defineConfig({
|
|||||||
fullyParallel: true, // false only for specific tests, overwritten in specific projects or global setups of projects
|
fullyParallel: true, // false only for specific tests, overwritten in specific projects or global setups of projects
|
||||||
forbidOnly: !!process.env.CI,
|
forbidOnly: !!process.env.CI,
|
||||||
retries: process.env.CI ? 2 : 0,
|
retries: process.env.CI ? 2 : 0,
|
||||||
workers: process.env.CI ? 1 : undefined, // undefined = amount of projects * amount of tests
|
workers: 1, // 1 worker = 1 test at the time, tests can't be parallelized
|
||||||
timeout: 30 * 1000, // timeout can be changed
|
timeout: 30 * 1000, // timeout can be changed
|
||||||
use: {
|
use: {
|
||||||
baseURL: process.env.CI
|
baseURL: process.env.CI
|
||||||
? process.env.CI_DEFAULT_BASE_URL
|
? process.env.CI_DEFAULT_BASE_URL
|
||||||
: (process.env.FRONTEND_BASE_URL ?? 'http://localhost:3001'),
|
: (process.env.FRONTEND_BASE_URL ?? 'http://app.localhost:3001'),
|
||||||
trace: 'retain-on-failure', // trace takes EVERYTHING from page source, records every single step, should be used only when normal debugging won't work
|
trace: 'retain-on-failure', // trace takes EVERYTHING from page source, records every single step, should be used only when normal debugging won't work
|
||||||
screenshot: 'on', // either 'on' here or in different method in modules, if 'on' all screenshots are overwritten each time the test is run
|
screenshot: 'on', // either 'on' here or in different method in modules, if 'on' all screenshots are overwritten each time the test is run
|
||||||
headless: true, // instead of changing it to false, run 'yarn test:e2e:debug' or 'yarn test:e2e:ui'
|
headless: true, // instead of changing it to false, run 'yarn test:e2e:debug' or 'yarn test:e2e:ui'
|
||||||
@ -56,6 +56,10 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
dependencies: ['Login setup'],
|
dependencies: ['Login setup'],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'Authentication',
|
||||||
|
testMatch: /authentication\/.*\.spec\.ts/,
|
||||||
|
},
|
||||||
|
|
||||||
//{
|
//{
|
||||||
// name: 'webkit',
|
// name: 'webkit',
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
import { test as base, expect } from '../../lib/fixtures/screenshot';
|
||||||
|
import { LoginPage } from '../../lib/pom/loginPage';
|
||||||
|
|
||||||
|
// fixture
|
||||||
|
const test = base.extend<{ loginPage: LoginPage }>({
|
||||||
|
loginPage: async ({ page }, use) => {
|
||||||
|
await use(new LoginPage(page));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check login with email', async ({ loginPage }) => {
|
||||||
|
await loginPage.typeEmail(process.env.DEFAULT_LOGIN);
|
||||||
|
await loginPage.clickContinueButton();
|
||||||
|
await loginPage.typePassword(process.env.DEFAULT_PASSWORD);
|
||||||
|
await loginPage.clickSignInButton();
|
||||||
|
await expect(loginPage.signInButton).not.toBeVisible();
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user