- Clean Playwright's configuration:
- Remove artificial 500ms delay between each step
- Group all tests under a `chrome` project relying on a `setup` project
to get an authentication state which all tests can reuse
- Changes on the `Sign up with invite link via email` test:
- Generate a new email for each test trial, as previously it was failing
when run many times
- Make deleting the account part of the test; if we write other tests
for account sign-up, we'll prefer to delete the accounts with an HTTP
call to speed up things
- Added some assertions to ensure we reached steps when expected, as we
removed the 500ms delay between each step, and it made some assertions
fail
- Wrote new tests for workflows:
- Created `Create workflow`, a test asserting we can create a workflow
from the record table
- Created `Create simple workflow`, a test asserting we can create a
simple flow; I will add more assertions to this test and write other
tests once this first PR is approved
- I make HTTP calls to delete and destroy workflows after they run to
keep the database clean
- Added a data-testid to ensure we focus elements from the Cmd+K; our
selectors are not strong – see `getByRole('textbox')` – and I preferred
to scope them to a root element
- Added an `aria-label` to a button
---------
Co-authored-by: prastoin <paul@twenty.com>
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { test as base, expect } from '@playwright/test';
|
|
import path from 'path';
|
|
import { LoginPage } from '../lib/pom/loginPage';
|
|
|
|
// fixture
|
|
const test = base.extend<{ loginPage: LoginPage }>({
|
|
loginPage: async ({ page }, use) => {
|
|
const loginPage = new LoginPage(page);
|
|
await use(loginPage);
|
|
},
|
|
});
|
|
|
|
test('Login test', async ({ loginPage, page }) => {
|
|
await test.step('Navigated to login page', async () => {
|
|
await page.goto('/');
|
|
});
|
|
await test.step(
|
|
'Logging in '.concat(page.url(), ' as ', process.env.DEFAULT_LOGIN),
|
|
async () => {
|
|
await page.waitForLoadState('networkidle');
|
|
if (
|
|
page.url().includes('demo.twenty.com') ||
|
|
!page.url().includes('app.localhost:3001')
|
|
) {
|
|
await loginPage.clickLoginWithEmail();
|
|
}
|
|
await loginPage.typeEmail(process.env.DEFAULT_LOGIN);
|
|
await loginPage.clickContinueButton();
|
|
await loginPage.typePassword(process.env.DEFAULT_PASSWORD);
|
|
await page.waitForLoadState('networkidle');
|
|
await loginPage.clickSignInButton();
|
|
await expect(page.getByText(/Welcome to .+/)).not.toBeVisible();
|
|
},
|
|
);
|
|
|
|
await test.step('Saved auth state', async () => {
|
|
await page.context().storageState({
|
|
path: path.resolve(__dirname, '..', '.auth', 'user.json'),
|
|
});
|
|
process.env.LINK = page.url();
|
|
});
|
|
});
|