Skip to content

Commit 7f6cf9c

Browse files
committed
updated login tests and helpers
1 parent c797881 commit 7f6cf9c

5 files changed

Lines changed: 35 additions & 42 deletions

File tree

client/tests/e2e/1-user-account/1.1-create-add.spec.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
generateUniqueUsername,
55
navigateTo,
66
selectVuetifyOptionByName,
7+
expectToHaveUrl,
78
} from "../utils/helpers";
89

910
async function setupCreateUserAccountPage(page: Page) {
@@ -15,12 +16,10 @@ async function setupCreateUserAccountPage(page: Page) {
1516
const institutionSelectLocator = page.getByTestId(
1617
"createUserAccount-institution-select",
1718
);
18-
1919
const roleSelectLocator = page.getByTestId("createUserAccount-role-select");
2020

2121
// fields
2222
const usernameLocator = page.getByLabel(/username/i);
23-
2423
const nameLocator = page
2524
.getByTestId("createUserAccount-name-input")
2625
.getByRole("textbox");
@@ -38,6 +37,7 @@ async function setupCreateUserAccountPage(page: Page) {
3837
.getByTestId("createUserAccount-confirmPassword-input")
3938
.getByRole("textbox");
4039

40+
// buttons
4141
const saveButtonLocator = page.getByTestId("createUserAccount-save-button");
4242
const cancelButtonLocator = page.getByTestId(
4343
"createUserAccount-cancel-button",
@@ -57,12 +57,6 @@ async function setupCreateUserAccountPage(page: Page) {
5757
};
5858
}
5959

60-
async function expectSuccessfulCreateRedirect(page: Page) {
61-
await expect(page).toHaveURL(/\/user-accounts(?:$|[?#])/i, {
62-
timeout: 10_000,
63-
});
64-
}
65-
6660
//TODO this test was left with kinda big redundancies to explain to the apprentices in simple terms what is going on. Small refactor later
6761
test.describe("1.1 User Accounts - CREATE Add", () => {
6862
test.beforeEach(async ({ page }) => {
@@ -160,7 +154,7 @@ test.describe("1.1 User Accounts - CREATE Add", () => {
160154

161155
expect(actualPayload).toMatchObject(expectedPayload);
162156

163-
await expectSuccessfulCreateRedirect(page);
157+
await expectToHaveUrl(page, "user-accounts");
164158

165159
//note that this test does not test if the backend actually saves the data correctly. This could be done in 2 ways:
166160
// 1: Navigate to User accounts, search for the username entered in the test, and look at the details - This however creates a dependency on get all, and get by id working. If one of those is broken, this test would fail too
@@ -243,7 +237,7 @@ test.describe("1.1 User Accounts - CREATE Add", () => {
243237
);
244238

245239
// expected to not change URL
246-
await expect(page).toHaveURL(/\/user-accounts\/create(?:$|[?#])/i);
240+
await expectToHaveUrl(page, "user-accounts/create");
247241
});
248242

249243
test("C Server Error - user account already exists (duplicate username)", async ({
@@ -313,8 +307,7 @@ test.describe("1.1 User Accounts - CREATE Add", () => {
313307
expect(createResponse.status()).toBe(400);
314308
expect(createResponse.ok()).toBeFalsy();
315309

316-
await expect(page).toHaveURL(/\/user-accounts\/create(?:$|[?#])/i);
317-
310+
await expectToHaveUrl(page, "user-accounts/create");
318311
//check toast
319312
const toast = page.locator(".toast-item[role='alert']");
320313

client/tests/e2e/1-user-account/1.2-create-register.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import {
55
selectVuetifyOptionByName,
66
} from "../utils/helpers";
77

8+
// broken atm
9+
// TODO use expectToHaveUrl helper and othees
10+
811
// Setup Method for page
912
async function setupRegisterPage(page: Page) {
1013
await page.addInitScript(() => {
Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
import { test, expect, Page } from "@playwright/test";
22
import { loginAsServerAdmin } from "../utils/authenticate";
3+
import { clearLocalAndSessionStorage, navigateTo } from "../utils/helpers";
34

45
const correctUser = "testmain";
56
const correctPass = "testmain";
6-
const wrongUser = "invalid@example.cdasdpef";
7+
const wrongUser = "invalid@example.cdasdpef_#!@#!DFFADFA||>>:P";
78
const wrongPass = "wrong-passworddddddddddddddd";
89

910
async function setupLoginPage(page: Page) {
10-
await page.addInitScript(() => {
11-
localStorage.clear();
12-
sessionStorage.clear();
13-
});
14-
await page.goto("/");
1511
await expect(page.getByTestId("login-page-container")).toBeVisible();
16-
12+
//fields definition
1713
const username = page.getByRole("textbox", { name: "Username *" });
1814
const password = page.getByRole("textbox", { name: "Password *" });
1915

@@ -28,6 +24,11 @@ test.use({
2824
});
2925

3026
test.describe("1.2.1 User Accounts - READ Log in", () => {
27+
test.beforeEach(async ({ page }) => {
28+
await clearLocalAndSessionStorage(page);
29+
await navigateTo(page, "/");
30+
});
31+
3132
test("A Successful login", async ({ page }) => {
3233
await loginAsServerAdmin(page, correctUser, correctPass);
3334
});
@@ -44,23 +45,4 @@ test.describe("1.2.1 User Accounts - READ Log in", () => {
4445
await expect(alert).toHaveCount(1);
4546
await page.waitForTimeout(600);
4647
});
47-
48-
test("C Navigates to Register", async ({ page }) => {
49-
await page.goto("/");
50-
51-
const link = page.getByTestId("login-register-link");
52-
53-
await link.click();
54-
await expect(page).toHaveURL(/register/);
55-
56-
await page.goto("/");
57-
await link.focus();
58-
await page.keyboard.press("Enter");
59-
await expect(page).toHaveURL(/register/);
60-
61-
await page.goto("/");
62-
await link.focus();
63-
await page.keyboard.press(" ");
64-
await expect(page).toHaveURL(/register/);
65-
});
6648
});

client/tests/e2e/utils/authenticate.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { expect, Page } from "@playwright/test";
2+
import { expectToHaveUrl, navigateTo } from "./helpers";
23

34
const SEB_SERVER_ADMIN_USERNAME = "testmain";
45
const SEB_SERVER_ADMIN_PASSWORD = "testmain";
@@ -8,7 +9,8 @@ export async function loginAsServerAdmin(
89
username: string = SEB_SERVER_ADMIN_USERNAME,
910
password: string = SEB_SERVER_ADMIN_PASSWORD,
1011
) {
11-
await page.goto("/");
12+
await navigateTo(page, "/");
13+
1214
await expect(page.getByTestId("login-page-container")).toBeVisible();
1315

1416
const usernameField = page.getByRole("textbox", { name: "Username *" });
@@ -19,7 +21,5 @@ export async function loginAsServerAdmin(
1921

2022
await page.keyboard.press("Enter");
2123

22-
await expect(page).toHaveURL(/\/home(?:$|[?#])/i, {
23-
timeout: 10_000,
24-
});
24+
await expectToHaveUrl(page, "home");
2525
}

client/tests/e2e/utils/helpers.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,18 @@ export async function selectVuetifyFirstOption(
6969
export async function navigateTo(page: Page, route: string) {
7070
await page.goto(route);
7171
}
72+
73+
export async function clearLocalAndSessionStorage(page: Page) {
74+
await page.addInitScript(() => {
75+
localStorage.clear();
76+
sessionStorage.clear();
77+
});
78+
}
79+
80+
export async function expectToHaveUrl(page: Page, path: string) {
81+
const regex = new RegExp(`\\/${path}(?:$|[?#])`, "i");
82+
83+
await expect(page).toHaveURL(regex, {
84+
timeout: 10_000,
85+
});
86+
}

0 commit comments

Comments
 (0)