Compare commits

...

2 Commits

Author SHA1 Message Date
Aravinth Manivannan 82d7659bc1
feat: fix title string
ci/woodpecker/push/woodpecker Pipeline failed Details
2024-01-10 01:57:49 +05:30
Aravinth Manivannan 5dc074a883
feat: use randomly generated usernames to avoid registration clashes 2024-01-10 01:54:34 +05:30
4 changed files with 50 additions and 26 deletions

View File

@ -4,10 +4,11 @@
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.");
await expect(page).toHaveTitle("Forgejo: Beyond coding. We forge.");
});
test("Go to explore page", async ({ page }) => {
@ -15,26 +16,28 @@ test("Go to explore page", async ({ page }) => {
await page.getByRole("link", { name: "Explore" }).click();
await page.waitForURL("**/explore/repos");
await expect(page).toHaveTitle("Explore - Forgejo: Beyond coding. We Forge.");
await expect(page).toHaveTitle("Explore - Forgejo: Beyond coding. We forge.");
});
test("Go to register page", async ({ page }) => {
const user = new User("gotoregisterpage");
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(config.USER_1.username);
await page.getByLabel("Email Address").fill(config.USER_1.email);
await page
.getByLabel("Password", { exact: true })
.fill(config.USER_1.password);
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(config.USER_1.username);
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."
"Register - Forgejo: Beyond coding. We forge."
);
expect(page.locator(".negative > p:nth-child(1)")).toContainText(
"passwords do not match"
@ -48,12 +51,10 @@ test("Go to register page", async ({ page }) => {
await page.getByLabel("Password", { exact: true }).clear();
await page.getByLabel("Confirm Password").clear();
await page.getByLabel("Username").fill(config.USER_1.username);
await page.getByLabel("Email Address").fill(config.USER_1.email);
await page
.getByLabel("Password", { exact: true })
.fill(config.USER_1.password);
await page.getByLabel("Confirm Password").fill(config.USER_1.password);
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 page.waitForURL("http://localhost:3001/");
@ -61,10 +62,10 @@ test("Go to register page", async ({ page }) => {
console.log(page.locator(".positive > p:nth-child(1)"));
await expect(page).toHaveTitle(
`${config.USER_1.username} - Dashboard - Forgejo: Beyond coding. We Forge.`
`${user.username} - Dashboard - Forgejo: Beyond coding. We forge.`
);
expect(page.locator(".positive > p:nth-child(1)")).toContainText(
"Account was successfully created. Welcome!"
);
expect(page.locator(".positive > p:nth-child(1)")).toContainText(
"Account was successfully created. Welcome!"
);
});

View File

@ -3,10 +3,3 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
export const INSTANCE_URL = new URL(process.env.INSTANCE_URL)
export const USER_1 = {
username: "playwrightuser1",
email: "playwrightuser1@example.com",
password: "628acdbd8b7b3f",
name: "Playwright User1",
}

15
tests/user.ts Normal file
View File

@ -0,0 +1,15 @@
import { getRandomString } from "./utils";
export default class User {
username: string;
name: string;
email: string;
password: string;
constructor(name: string) {
this.name = name;
this.username = `playwright_${getRandomString(6)}_${name}`;
this.email = `${this.username}@playwright.local`;
this.password = "628acdbd8b7b3f";
}
}

15
tests/utils.ts Normal file
View File

@ -0,0 +1,15 @@
// generateId :: Integer -> String
export function getRandomString (len: number) {
let crypto = require("crypto");
let id = crypto.randomBytes(len).toString('hex');
return id;
// function dec2hex (dec) {
// return dec.toString(16).padStart(2, "0")
// }
//
//
// var arr = new Uint8Array((len || 40) / 2)
// window.crypto.getRandomValues(arr)
// return Array.from(arr, dec2hex).join('')
}