Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion playwright/helpers/recycle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,19 @@ export async function loginUser(page: Page, testInfo: any, password: string,){
}

await page.getByRole('button', { name: 'Sign In' }).click();
}
};

export async function fillUpSignUpForm(page: Page, emailAddress: string, password: string, secondPassword: string, PicName: string, username: string){
await page.goto('https://audaf-testing.onrender.com/signup');
await page.getByRole('textbox', { name: 'Password', exact: true }).click();
await page.getByRole('textbox', { name: 'Password', exact: true }).fill(password);
await page.getByRole('textbox', { name: 'Confirm Password' }).click();
await page.getByRole('textbox', { name: 'Confirm Password' }).fill(secondPassword);
await page.getByRole('textbox', { name: 'Username' }).click();
await page.getByRole('textbox', { name: 'Username' }).fill(username);
await page.getByRole('textbox', { name: 'Email Address' }).click();
await page.getByRole('textbox', { name: 'Email Address' }).fill(emailAddress);
await page.locator('input[type="file"]').setInputFiles(PicName);
await page.getByRole('button', { name: '-- Select country --' }).click();
await page.getByRole('button', { name: 'Albania flag Albania' }).click();
}
1 change: 1 addition & 0 deletions playwright/utils/functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export function getAuthFileByProjectName(projectName: string) {
return path.join(authDir, `user-${projectName.toLowerCase()}.json`);
}


export function getAuthFileTamperedByProjectName(projectName: string) {
return path.join(authDir, `userTampered-${projectName.toLowerCase()}.json`);
}
Expand Down
101 changes: 11 additions & 90 deletions tests/01-createAccount.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import { MailpitCodeFetcher,
readEmailData,
saveEmailAddressForProject,
getAuthFileByProjectName,
getAuthFileUnverified} from "../playwright/utils/functions.ts"
getAuthFileUnverified} from "../playwright/utils/functions.ts";
import {fillUpSignUpForm} from "../playwright/helpers/recycle.ts";



Expand All @@ -20,18 +21,7 @@ test.describe.serial('create accounts and testing account creation with already
saveEmailAddressForProject(projectName, emailAddress);

// Filling up Signup Forum
await page.goto('https://audaf-testing.onrender.com/signup');
await page.getByRole('textbox', { name: 'Password', exact: true }).click();
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Confirm Password' }).click();
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Username' }).click();
await page.getByRole('textbox', { name: 'Username' }).fill('testusername');
await page.getByRole('textbox', { name: 'Email Address' }).click();
await page.getByRole('textbox', { name: 'Email Address' }).fill(emailAddress);
await page.locator('input[type="file"]').setInputFiles('jellyfishWallpaper.jpg');
await page.getByRole('button', { name: '-- Select country --' }).click();
await page.getByRole('button', { name: 'Albania flag Albania' }).click();
await fillUpSignUpForm(page, emailAddress, "securepassword123", "securepassword123", "jellyfishWallpaper.jpg", "testusername" )
await page.getByRole('button', { name: 'Create Account' }).click();

// Wait for navigation to verification page
Expand Down Expand Up @@ -62,19 +52,8 @@ test.describe.serial('create accounts and testing account creation with already
const projectName = testInfo.project.name;
const emailData = readEmailData();
const emailAddress = emailData[projectName.toLowerCase()] || `test-user-${projectName.toLowerCase()}@gamil.com`;

await page.goto('https://audaf-testing.onrender.com/signup');
await page.getByRole('textbox', { name: 'Password', exact: true }).click();
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Confirm Password' }).click();
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Username' }).click();
await page.getByRole('textbox', { name: 'Username' }).fill('testusername2');
await page.getByRole('textbox', { name: 'Email Address' }).click();
await page.getByRole('textbox', { name: 'Email Address' }).fill(emailAddress);
await page.locator('input[type="file"]').setInputFiles('jellyfishWallpaper.jpg');
await page.getByRole('button', { name: '-- Select country --' }).click();
await page.getByRole('button', { name: 'Albania flag Albania' }).click();

await fillUpSignUpForm(page, emailAddress, "securepassword123", "securepassword123", "jellyfishWallpaper.jpg", "testusername2" )
await page.getByRole('button', { name: 'Create Account' }).click();
await expect(page.getByText('Email already in use')).toBeVisible({ timeout: 15000 });
});
Expand All @@ -83,82 +62,35 @@ test.describe.serial('create accounts and testing account creation with already
const projectName = testInfo.project.name;
const emailAddress = `test-user-${projectName.toLowerCase()}-${Date.now()}@gamil.com`;

await page.goto('https://audaf-testing.onrender.com/signup');
await page.getByRole('textbox', { name: 'Password', exact: true }).click();
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Confirm Password' }).click();
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('mismatched1'); //<- mismatching
await page.getByRole('textbox', { name: 'Username' }).click();
await page.getByRole('textbox', { name: 'Username' }).fill('testusername2');
await page.getByRole('textbox', { name: 'Email Address' }).click();
await page.getByRole('textbox', { name: 'Email Address' }).fill(emailAddress);
await page.locator('input[type="file"]').setInputFiles('jellyfishWallpaper.jpg');
await page.getByRole('button', { name: '-- Select country --' }).click();
await page.getByRole('button', { name: 'Albania flag Albania' }).click();
await fillUpSignUpForm(page, emailAddress, "securepassword123", "mismatched1", "jellyfishWallpaper.jpg", "testusername2" )
await expect(page.getByRole('button', { name: 'Create Account' })).toBeDisabled();
});

test("trying to create account with invalid email format", async({page}, testInfo)=>{
const projectName = testInfo.project.name;
const emailAddress = `test-user-${projectName.toLowerCase()}-${Date.now()}gamil.com`; // <- invalid format

await page.goto('https://audaf-testing.onrender.com/signup');
await page.getByRole('textbox', { name: 'Password', exact: true }).click();
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Confirm Password' }).click();
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Username' }).click();
await page.getByRole('textbox', { name: 'Username' }).fill('testusername2');
await page.getByRole('textbox', { name: 'Email Address' }).click();
await page.getByRole('textbox', { name: 'Email Address' }).fill(emailAddress);
await page.locator('input[type="file"]').setInputFiles('jellyfishWallpaper.jpg');
await page.getByRole('button', { name: '-- Select country --' }).click();
await page.getByRole('button', { name: 'Albania flag Albania' }).click();
await fillUpSignUpForm(page, emailAddress, "securepassword123", "securepassword123", "jellyfishWallpaper.jpg", "testusername2" )
await expect(page.getByRole('button', { name: 'Create Account' })).toBeDisabled();
});

test("trying to create account with weak password", async({page}, testInfo)=>{
const projectName = testInfo.project.name;
const emailAddress = `test-user-${projectName.toLowerCase()}-${Date.now()}@gamil.com`;

await page.goto('https://audaf-testing.onrender.com/signup');
await page.getByRole('textbox', { name: 'Password', exact: true }).click();
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('weak'); // <- weak password
await page.getByRole('textbox', { name: 'Confirm Password' }).click();
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('weak');
await page.getByRole('textbox', { name: 'Username' }).click();
await page.getByRole('textbox', { name: 'Username' }).fill('testusername2');
await page.getByRole('textbox', { name: 'Email Address' }).click();
await page.getByRole('textbox', { name: 'Email Address' }).fill(emailAddress);
await page.locator('input[type="file"]').setInputFiles('jellyfishWallpaper.jpg');
await page.getByRole('button', { name: '-- Select country --' }).click();
await page.getByRole('button', { name: 'Albania flag Albania' }).click();
await fillUpSignUpForm(page, emailAddress, "weak", "weak", "jellyfishWallpaper.jpg", "testusername2" )
await expect(page.getByRole('button', { name: 'Create Account' })).toBeDisabled();
});

test("trying to create account with a profile picture in the wrong format", async({page}, testInfo)=>{
const projectName = testInfo.project.name;
const emailAddress = `test-user-${projectName.toLowerCase()}-${Date.now()}@gamil.com`;

await page.goto('https://audaf-testing.onrender.com/signup');
await page.getByRole('textbox', { name: 'Password', exact: true }).click();
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Confirm Password' }).click();
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Username' }).click();
await page.getByRole('textbox', { name: 'Username' }).fill('testusername2');
await page.getByRole('textbox', { name: 'Email Address' }).click();
await page.getByRole('textbox', { name: 'Email Address' }).fill(emailAddress);
await page.locator('input[type="file"]').setInputFiles('ghibli-gif.gif');
await page.getByRole('button', { name: '-- Select country --' }).click();
await page.getByRole('button', { name: 'Albania flag Albania' }).click();
await fillUpSignUpForm(page, emailAddress, "securepassword123", "securepassword123", "ghibli-gif.gif", "testusername2" )
await page.getByRole('button', { name: 'Create Account' }).click();
await page.waitForURL("https://audaf-testing.onrender.com/verify-email", { timeout: 30000 });
const allMessages = await page.consoleMessages();
const uploadFailed = allMessages.some(msg =>
msg.text().includes("avatar upload failed")
);

const uploadFailed = allMessages.some(msg => msg.text().includes("avatar upload failed"));
expect(uploadFailed).toBe(true);
});

Expand All @@ -169,18 +101,7 @@ test.describe.serial('create accounts and testing account creation with already
saveEmailAddressForProject(`${projectName}-unverified`, unverifiedEmailAddress);

// Filling up Signup Forum
await page.goto('https://audaf-testing.onrender.com/signup');
await page.getByRole('textbox', { name: 'Password', exact: true }).click();
await page.getByRole('textbox', { name: 'Password', exact: true }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Confirm Password' }).click();
await page.getByRole('textbox', { name: 'Confirm Password' }).fill('securepassword123');
await page.getByRole('textbox', { name: 'Username' }).click();
await page.getByRole('textbox', { name: 'Username' }).fill('testuserunverified');
await page.getByRole('textbox', { name: 'Email Address' }).click();
await page.getByRole('textbox', { name: 'Email Address' }).fill(unverifiedEmailAddress);
await page.locator('input[type="file"]').setInputFiles('jellyfishWallpaper.jpg');
await page.getByRole('button', { name: '-- Select country --' }).click();
await page.getByRole('button', { name: 'Albania flag Albania' }).click();
await fillUpSignUpForm(page, unverifiedEmailAddress, "securepassword123", "securepassword123", "jellyfishWallpaper.jpg", "testuserunverified" )
await page.getByRole('button', { name: 'Create Account' }).click();
await page.waitForURL("https://audaf-testing.onrender.com/verify-email", { timeout: 30000 });

Expand Down
1 change: 0 additions & 1 deletion tests/03-CRUDActionsAndNavigation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {getAuthFileByProjectName,
MailpitCodeFetcher} from "../playwright/utils/functions.ts"
import {loginUser} from "../playwright/helpers/recycle.ts"


test.describe.serial('CRUD Actions and Navigation', () => {
test.beforeEach(async ({ page }, testInfo) => {
const authFile = getAuthFileByProjectName(testInfo.project.name);
Expand Down
18 changes: 0 additions & 18 deletions tests/04-cleanUpTestAccounts.spec.ts

This file was deleted.

42 changes: 42 additions & 0 deletions tests/04-unverifiedEmailCRUDActions.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// @ts-check
import { test, expect } from '@playwright/test';
import path from "path";
import { exec } from 'child_process';
import { promisify } from 'util';
import {loginUser} from "../playwright/helpers/recycle.ts"
import {getAuthFileUnverified, restoreAuthState} from "../playwright/utils/functions.ts"

const cleanUpScript = path.join(__dirname, '../.github/scripts/cleanUp.js');

const execAsync = promisify(exec);

test.describe.serial('Unverified Email CRUD Actions', () => {
test.beforeEach(async ({ page }, testInfo) => {
const authFileUnverified = getAuthFileUnverified(testInfo.project.name);
await restoreAuthState(page, authFileUnverified);
});

test.afterAll(async () => {
const { stdout, stderr } = await execAsync(`node ${cleanUpScript}`);
console.log('Cleanup stdout:', stdout);
console.error('Cleanup stderr:', stderr);

expect(stdout).toContain('Finished checking for users to delete.');
expect(stderr).toBe('');
});

test('navigating home', async ({ page }) => {
await page.goto('https://audaf-testing.onrender.com/home');
await expect(page.getByText('Welcome Home, testuserunverified!', { exact: true})).not.toBeVisible();
});

test("logging in with correct credentials but unverified email", async({page}, testInfo)=>{

await loginUser(page, testInfo, "newSecurePassword123")

await page.waitForTimeout(3000);
await expect(page.locator('form')).toBeVisible({ timeout: 10000 });
await page.context().storageState({ path: getAuthFileUnverified(testInfo.project.name) });
});
});

90 changes: 0 additions & 90 deletions tests/05-unverifiedEmailCRUDActions.spec.ts

This file was deleted.

Loading