126 lines
4.1 KiB
TypeScript
126 lines
4.1 KiB
TypeScript
// SPDX-FileCopyrightText: 2024 Aravinth Manivannan <realaravinth@batsense.net>
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import { test, expect } from "@playwright/test";
|
|
import * as config from "./config";
|
|
import User from "./user";
|
|
|
|
test("has title", async ({ page }) => {
|
|
await page.goto(config.INSTANCE_URL.toString());
|
|
await expect(page).toHaveTitle("Forgejo: Beyond coding. We forge.");
|
|
});
|
|
|
|
test("Go to explore page", async ({ page }) => {
|
|
await page.goto(config.INSTANCE_URL.toString());
|
|
await page.getByRole("link", { name: "Explore" }).click();
|
|
await page.waitForURL("**/explore/repos");
|
|
|
|
await expect(page).toHaveTitle("Explore - Forgejo: Beyond coding. We forge.");
|
|
});
|
|
|
|
test("Test registration error: password mismatch", async ({ page }) => {
|
|
const user = new User("pwmismatch");
|
|
|
|
console.log(`running with user ${user.username}`);
|
|
|
|
await page.goto(config.INSTANCE_URL.toString());
|
|
await page.getByRole("link", { name: "Register" }).click();
|
|
await page.waitForURL("**/user/sign_up");
|
|
|
|
await page.getByLabel("Username").fill(user.username);
|
|
await page.getByLabel("Email Address").fill(user.email);
|
|
await page.getByLabel("Password", { exact: true }).fill(user.password);
|
|
// passwords don't match
|
|
await page.getByLabel("Confirm Password").fill(user.username);
|
|
|
|
await page.getByRole("button", { name: "Register Account" }).click();
|
|
|
|
await expect(page).toHaveTitle(
|
|
"Register - Forgejo: Beyond coding. We forge."
|
|
);
|
|
expect(page.locator(".negative > p:nth-child(1)")).toContainText(
|
|
"passwords do not match"
|
|
);
|
|
});
|
|
|
|
test("Test registration error: dupe user", async ({ page }) => {
|
|
const user = new User("dupeuser");
|
|
|
|
// pre-register user for duplicate user test
|
|
await user.register(page);
|
|
await user.logout(page);
|
|
await expect(page).toHaveTitle("Forgejo: Beyond coding. We forge.");
|
|
|
|
await page.getByRole("link", { name: "Register" }).click();
|
|
await page.waitForURL("**/user/sign_up");
|
|
|
|
await page.getByLabel("Username").fill(user.username);
|
|
await page.getByLabel("Email Address").fill(user.email);
|
|
await page.getByLabel("Password", { exact: true }).fill(user.password);
|
|
await page.getByLabel("Confirm Password").fill(user.password);
|
|
|
|
await page.getByRole("button", { name: "Register Account" }).click();
|
|
|
|
await expect(page).toHaveTitle(
|
|
"Register - Forgejo: Beyond coding. We forge."
|
|
);
|
|
await page.locator(".negative > p:nth-child(1)").waitFor();
|
|
expect(page.locator(".negative > p:nth-child(1)")).toContainText(
|
|
"The username is already taken."
|
|
);
|
|
});
|
|
|
|
test("Test successful registration", async ({ page }) => {
|
|
const user = new User("register");
|
|
|
|
console.log(`running with user ${user.username}`);
|
|
|
|
await page.goto(config.INSTANCE_URL.toString());
|
|
|
|
// successful registration
|
|
|
|
await user.register(page);
|
|
|
|
await page.waitForURL(config.INSTANCE_URL.toString());
|
|
await expect(page).toHaveTitle(
|
|
`${user.username} - Dashboard - Forgejo: Beyond coding. We forge.`
|
|
);
|
|
|
|
expect(page.locator(".positive > p:nth-child(1)")).toContainText(
|
|
"Account was successfully created. Welcome!"
|
|
);
|
|
});
|
|
|
|
test("Test signout", async ({ page }) => {
|
|
const user = new User("signout");
|
|
|
|
// successful registration
|
|
await user.register(page);
|
|
await user.logout(page);
|
|
await expect(page).toHaveTitle("Forgejo: Beyond coding. We forge.");
|
|
});
|
|
|
|
test("Test login", async ({ page }) => {
|
|
const user = new User("login");
|
|
|
|
// successful registration
|
|
await user.register(page);
|
|
await user.logout(page);
|
|
await user.login(page);
|
|
await user.logout(page);
|
|
|
|
// sign in with email
|
|
await page.goto(config.INSTANCE_URL.toString());
|
|
await page.getByRole("link", { name: "Sign In" }).click();
|
|
await page.waitForURL("**/user/login**");
|
|
await page.getByLabel("Username").clear();
|
|
await page.getByLabel("Password", { exact: true }).clear();
|
|
await page.getByLabel("Username").fill(user.email);
|
|
await page.getByLabel("Password", { exact: true }).fill(user.password);
|
|
await page.getByRole("button", { name: "Sign In" }).click();
|
|
|
|
await expect(page).toHaveTitle(
|
|
`${user.username} - Dashboard - Forgejo: Beyond coding. We forge.`
|
|
);
|
|
});
|