Skip to content

Commit 08e2b42

Browse files
committed
frontend: add more tests.
1 parent 30b8251 commit 08e2b42

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

frontend/tests/basic.spec.ts

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,98 @@ test('invalid register form', async ({ page }) => {
2828
await expect(page.getByText('Must contain at least one')).toBeVisible();
2929
});
3030

31+
test('invalid login attempts', async ({ page }) => {
32+
await page.goto(testDomain);
33+
34+
// Test with wrong password
35+
await page.getByRole('textbox', { name: 'Email' }).fill(testUser1Email);
36+
await page.getByRole('textbox', { name: 'Password' }).fill('wrong_password');
37+
await page.getByRole('button', { name: 'Login' }).click();
38+
await expect(page.getByText('Email-address or password wrong.')).toBeVisible();
39+
40+
// Test with non-existent email
41+
await page.getByRole('textbox', { name: 'Email' }).fill('[email protected]');
42+
await page.getByRole('textbox', { name: 'Password' }).fill(testPassword1);
43+
await page.getByRole('button', { name: 'Login' }).click();
44+
await expect(page.getByText('Email-address or password wrong.')).toBeVisible();
45+
});
46+
47+
test('navigation and logout', async ({ page }) => {
48+
await login(page, testUser1Email, testPassword1);
49+
50+
// Test navigation to different pages
51+
await page.getByRole('link', { name: 'Token' }).click();
52+
await expect(page.getByRole('heading', { name: 'Create authorization token' })).toBeVisible();
53+
54+
await page.getByRole('link', { name: 'Account' }).click();
55+
await expect(page.getByRole('heading', { name: 'Account information' })).toBeVisible();
56+
57+
// Test logout
58+
await page.getByRole('button', { name: 'Logout', exact: true }).click();
59+
await expect(page.getByRole('button', { name: 'Login' })).toBeVisible();
60+
});
61+
62+
test('token management', async ({ page }) => {
63+
await login(page, testUser1Email, testPassword1);
64+
65+
await page.getByRole('link', { name: 'Token' }).click();
66+
67+
// Create a token
68+
await page.getByRole('textbox', { name: 'Name' }).fill('Test Token 1');
69+
await page.getByRole('button', { name: 'Create token' }).click();
70+
71+
// Verify token appears in list
72+
await expect(page.getByText('Test Token 1')).toBeVisible();
73+
74+
// Create another token
75+
await page.getByRole('textbox', { name: 'Name' }).clear();
76+
await page.getByRole('textbox', { name: 'Name' }).fill('Test Token 2');
77+
await page.getByRole('button', { name: 'Create token' }).click();
78+
79+
// Verify both tokens exist
80+
await expect(page.getByText('Test Token 1')).toBeVisible();
81+
await expect(page.getByText('Test Token 2')).toBeVisible();
82+
83+
// Delete a token
84+
await page.getByRole('button', { name: 'Delete' }).nth(0).click();
85+
await expect(page.getByText('Test Token 1')).not.toBeVisible();
86+
await expect(page.getByText('Test Token 2')).toBeVisible();
87+
});
88+
89+
test('account information validation', async ({ page }) => {
90+
await login(page, testUser1Email, testPassword1);
91+
92+
await page.getByRole('link', { name: 'Account' }).click();
93+
94+
// Test invalid name (empty)
95+
await page.getByLabel('Name').clear();
96+
await page.getByRole('button', { name: 'Save changes' }).click();
97+
await expect(page.getByText('The name must not be empty')).toBeVisible();
98+
99+
await page.getByLabel('Email-address').clear();
100+
await page.getByLabel('Email-address').fill(testUser1Email);
101+
await page.getByRole('button', { name: 'Save changes' }).click();
102+
});
103+
104+
test('password change dialog validation', async ({ page }) => {
105+
await login(page, testUser1Email, testPassword1);
106+
107+
await page.getByRole('link', { name: 'Account' }).click();
108+
await page.getByRole('button', { name: 'Change password' }).click();
109+
110+
await page.getByLabel('Current password').fill(testPassword1);
111+
await page.getByLabel('New password').fill('weak');
112+
await page.getByRole('dialog').getByRole('button', { name: 'Change password' }).click();
113+
await expect(page.getByText('Must contain at least one')).toBeVisible();
114+
115+
await page.getByLabel('Current password').clear();
116+
await page.getByLabel('Current password').fill('wrong_password');
117+
await page.getByLabel('New password').clear();
118+
await page.getByLabel('New password').fill('ValidPassword123!');
119+
await page.getByRole('dialog').getByRole('button', { name: 'Change password' }).click();
120+
await page.getByRole('button', { name: 'Close' }).click();
121+
});
122+
31123
test('charger lifecycle', async ({ page }) => {
32124
test.slow();
33125

@@ -142,6 +234,8 @@ test('change accountname', async ({page}) => {
142234
await expect(page.getByRole('heading', { name: 'Account information' })).toBeVisible();
143235
});
144236

237+
// ===== TESTS AFTER THIS POINT CREATE NEW USERS OR USE DIFFERENT CREDENTIALS =====
238+
145239
test('change password', async ({page}) => {
146240
await login(page, testUser2Email, testPassword1);
147241

0 commit comments

Comments
 (0)