-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathonboarding.test.ts
74 lines (57 loc) · 3.71 KB
/
onboarding.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import { expect } from '@playwright/test';
import { useLoggedUser } from '../helpers/auth.ts';
import { databaseBuilder } from '../helpers/db.ts';
import { test } from '../helpers/fixtures.ts';
test('A new user joins a new organization from an invitation link', async function ({ page }) {
const invitation = databaseBuilder.factory.buildOrganizationInvitation();
await databaseBuilder.commit();
await page.goto(`/rejoindre?invitationId=${invitation.id}&code=${invitation.code}`);
await expect(page.getByText('Vous êtes invité(e) à')).toBeVisible();
test.step('signup user', async () => {
await page.getByRole('textbox', { name: 'Prénom' }).fill('mini');
await page.getByRole('textbox', { name: 'Nom', exact: true }).fill('pixou');
await page.getByRole('textbox', { name: 'Adresse e-mail' }).fill('minipixou@example.net');
await page.getByRole('textbox', { name: 'Mot de passe' }).fill('Azerty123*');
await page.getByRole('checkbox', { name: "Accepter les conditions d'utilisation de Pix" }).check();
await page.getByRole('button', { name: "Je m'inscris" }).click();
});
await page.getByRole('heading', { name: "Veuillez accepter nos Conditions Générales d'Utilisation" }).waitFor();
await page.getByRole('button', { name: 'Accepter et continuer' }).click();
await expect(page.getByRole('heading', { name: 'Campagnes' })).toBeVisible();
});
test('An existing user joins a new organization from an invitation link', async function ({ page }) {
const invitation = databaseBuilder.factory.buildOrganizationInvitation();
const user = databaseBuilder.factory.buildUser.withRawPassword();
await databaseBuilder.commit();
await page.goto(`/rejoindre?invitationId=${invitation.id}&code=${invitation.code}`);
await expect(page.getByText('Vous êtes invité(e) à')).toBeVisible();
test.step('signin user', async () => {
await page.getByRole('button', { name: 'Se connecter' }).click();
await page.getByRole('textbox', { name: 'Adresse e-mail' }).fill(user.email);
await page.getByRole('textbox', { name: 'Mot de passe' }).fill('pix123');
await page.getByRole('button', { name: 'Je me connecte' }).click();
});
await page.getByRole('heading', { name: "Veuillez accepter nos Conditions Générales d'Utilisation" }).waitFor();
await page.getByRole('button', { name: 'Accepter et continuer' }).click();
await expect(page.getByRole('heading', { name: 'Campagnes' })).toBeVisible();
});
test.describe('When user is already authenticated to Pix Orga', () => {
const userId = useLoggedUser('pix-orga');
test('Joins a new organization from an invitation link', async function ({ page }) {
const invitation = databaseBuilder.factory.buildOrganizationInvitation();
const user = databaseBuilder.factory.buildUser.withMembership({ id: userId });
await databaseBuilder.commit();
await page.goto(`/rejoindre?invitationId=${invitation.id}&code=${invitation.code}`);
await expect(page.getByText('Vous êtes invité(e) à')).toBeVisible();
test.step('signin user', async () => {
await page.getByRole('button', { name: 'Se connecter' }).click();
await page.getByRole('textbox', { name: 'Adresse e-mail' }).fill(user.email);
await page.getByRole('textbox', { name: 'Mot de passe' }).fill('pix123');
await page.getByRole('button', { name: 'Je me connecte' }).click();
});
await page.getByRole('heading', { name: "Veuillez accepter nos Conditions Générales d'Utilisation" }).waitFor();
await page.getByRole('button', { name: 'Accepter et continuer' }).click();
await expect(page.getByRole('heading', { name: 'Campagnes' })).toBeVisible();
await expect(page.getByRole('paragraph').filter({ hasText: 'Observatoire de Pix' })).toBeVisible();
});
});