mirror of
https://github.com/twentyhq/twenty.git
synced 2024-12-25 04:55:30 +03:00
b1fbf4b683
Continuation of #6644 Now chromium browser is used in workspaces tests instead of firefox and screenshots after each test are properly saved in one folder when run from IDE and from terminal using `yarn test:e2e` command
67 lines
3.3 KiB
TypeScript
67 lines
3.3 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { sh } from '../drivers/shell_driver';
|
|
|
|
test.describe('', () => {
|
|
test('Testing logging', async ({ page }) => {
|
|
await page.goto('/');
|
|
await page.getByRole('button', { name: 'Continue With Email' }).click();
|
|
await page.getByPlaceholder('Email').fill('tim@apple.dev');
|
|
await page.getByRole('button', { name: 'Continue', exact: true }).click();
|
|
await page.getByPlaceholder('Password').fill('Applecar2025');
|
|
await page.getByRole('button', { name: 'Sign in' }).click();
|
|
await expect(page.getByText('Welcome to Twenty')).not.toBeVisible();
|
|
expect(page.url()).not.toContain('/welcome');
|
|
await page.getByRole('link', { name: 'Opportunities' }).click();
|
|
await expect(page.locator('tbody > tr')).toHaveCount(4);
|
|
});
|
|
|
|
test('Creating new workspace', async ({ page, browserName }) => {
|
|
// this test must use only 1 browser, otherwise it will lead to success and fail (1 workspace is created instead of x workspaces)
|
|
if (browserName == 'chromium') {
|
|
await page.goto('/');
|
|
await page.getByRole('button', { name: 'Continue With Email' }).click();
|
|
await page.getByPlaceholder('Email').fill('test@apple.dev'); // email must be changed each time test is run
|
|
await page.getByPlaceholder('Email').press('Enter'); // otherwise if tests fails after this step, new workspace is created
|
|
await page.getByPlaceholder('Password').fill('Applecar2025');
|
|
await page.getByPlaceholder('Password').press('Enter');
|
|
await page.getByPlaceholder('Apple').fill('Test');
|
|
await page.getByRole('button', { name: 'Continue' }).click();
|
|
await page.getByPlaceholder('Tim').click();
|
|
await page.getByPlaceholder('Tim').fill('Test2');
|
|
await page.getByPlaceholder('Cook').click();
|
|
await page.getByPlaceholder('Cook').fill('Test2');
|
|
await page.getByRole('button', { name: 'Continue' }).click();
|
|
await page.getByText('Continue without sync').click();
|
|
await page.getByRole('button', { name: 'Finish' }).click();
|
|
await expect(page.locator('table')).toBeVisible({ timeout: 1000 });
|
|
}
|
|
});
|
|
|
|
test('Syncing all workspaces', async () => {
|
|
await sh('npx nx run twenty-server:command workspace:sync-metadata -f');
|
|
await sh('npx nx run twenty-server:command workspace:sync-metadata -f');
|
|
});
|
|
|
|
test('Resetting database', async ({ page, browserName }) => {
|
|
if (browserName === 'chromium') {
|
|
await sh('yarn nx database:reset twenty-server'); // if this command fails for any reason, database must be restarted manually using the same command because database is in unstable state
|
|
await page.goto('/');
|
|
await page.getByRole('button', { name: 'Continue With Email' }).click();
|
|
await page.getByPlaceholder('Email').fill('tim@apple.dev');
|
|
await page.getByRole('button', { name: 'Continue' }).click();
|
|
await page.getByPlaceholder('Password').fill('Applecar2025');
|
|
await page.getByRole('button', { name: 'Sign in' }).click();
|
|
await page.getByRole('link', { name: 'Companies' }).click();
|
|
expect(page.url()).toContain('/companies');
|
|
await expect(page.locator('table')).toBeVisible();
|
|
}
|
|
});
|
|
|
|
test('Seeding database', async ({ page, browserName }) => {
|
|
if (browserName === 'chromium') {
|
|
await sh('npx nx workspace:seed:demo');
|
|
await page.goto('/');
|
|
}
|
|
});
|
|
});
|