71 lines
1.9 KiB
TypeScript
71 lines
1.9 KiB
TypeScript
import { test, expect } from "#tests/e2e/fixtures/real-auth"
|
|
|
|
test.describe("Login (Integration)", () => {
|
|
test("should login with registered credentials and stay authenticated after reload", async ({
|
|
realLoginPage,
|
|
}) => {
|
|
const { page, user } = realLoginPage
|
|
|
|
await realLoginPage.login()
|
|
|
|
await expect(page).toHaveURL("/")
|
|
await expect(
|
|
page.getByRole("heading", {
|
|
name: new RegExp(`Добро пожаловать, ${user.firstName}`),
|
|
}),
|
|
).toBeVisible()
|
|
await expect
|
|
.poll(() => realLoginPage.getCookie("access_token"))
|
|
.toBeTruthy()
|
|
await expect
|
|
.poll(() => realLoginPage.getCookie("refresh_token"))
|
|
.toBeTruthy()
|
|
|
|
await page.reload()
|
|
|
|
await expect(page).toHaveURL("/")
|
|
await expect(
|
|
page.getByRole("heading", {
|
|
name: new RegExp(`Добро пожаловать, ${user.firstName}`),
|
|
}),
|
|
).toBeVisible()
|
|
})
|
|
|
|
test("should keep user on login page and avoid auth cookies for invalid password", async ({
|
|
realLoginPage,
|
|
}) => {
|
|
const { page, user } = realLoginPage
|
|
const wrongPassword = `${user.password}_wrong`
|
|
|
|
await realLoginPage.login(wrongPassword)
|
|
|
|
await expect(page).toHaveURL(/\/login$/)
|
|
await expect(page.getByRole("button", { name: "Войти" })).toBeEnabled()
|
|
await expect(page.getByRole("textbox", { name: "Логин" })).toHaveValue(
|
|
user.username,
|
|
)
|
|
await expect(page.getByLabel("Пароль")).toHaveValue(wrongPassword)
|
|
await expect
|
|
.poll(() => realLoginPage.getCookie("access_token"))
|
|
.toBeFalsy()
|
|
await expect
|
|
.poll(() => realLoginPage.getCookie("refresh_token"))
|
|
.toBeFalsy()
|
|
})
|
|
|
|
test("should submit the login form with Enter from password field", async ({
|
|
realLoginPage,
|
|
}) => {
|
|
const { page, user } = realLoginPage
|
|
|
|
await realLoginPage.submitWithEnter()
|
|
|
|
await expect(page).toHaveURL("/")
|
|
await expect(
|
|
page.getByRole("heading", {
|
|
name: new RegExp(`Добро пожаловать, ${user.firstName}`),
|
|
}),
|
|
).toBeVisible()
|
|
})
|
|
})
|