The commit introduces Playwright configuration for End-to-End testing and modifies several files to optimize the project's structure. It also modifies the middleware to interact with Next.js and fix URL creation. Changes in database types were made to refine their structure.
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { AuthPageObject } from './auth.po';
|
|
|
|
test.describe('Auth flow', () => {
|
|
test.describe.configure({ mode: 'serial' });
|
|
|
|
let email: string;
|
|
|
|
test('will sign-up and redirect to the home page', async ({ page }) => {
|
|
const auth = new AuthPageObject(page);
|
|
await auth.goToSignUp();
|
|
|
|
email = auth.createRandomEmail();
|
|
|
|
console.log(`Signing up with email ${email} ...`);
|
|
|
|
await auth.signUp({
|
|
email,
|
|
password: 'password',
|
|
repeatPassword: 'password',
|
|
});
|
|
|
|
await auth.visitConfirmEmailLink(email);
|
|
|
|
expect(page.url()).toContain('http://localhost:3000/home');
|
|
});
|
|
|
|
test('will sign-in with the correct credentials', async ({ page }) => {
|
|
const auth = new AuthPageObject(page);
|
|
await auth.goToSignIn();
|
|
|
|
console.log(`Signing in with email ${email} ...`);
|
|
|
|
await auth.signIn({
|
|
email,
|
|
password: 'password',
|
|
});
|
|
|
|
await page.waitForURL('http://localhost:3000/home');
|
|
|
|
expect(page.url()).toContain('http://localhost:3000/home');
|
|
});
|
|
});
|
|
|
|
test.describe('Protected routes', () => {
|
|
test('will redirect to the sign-in page if not authenticated', async ({ page }) => {
|
|
await page.goto('/home/settings');
|
|
|
|
expect(page.url()).toContain('/auth/sign-in?next=/home/settings');
|
|
});
|
|
|
|
test('will return a 404 for the admin page', async ({ page }) => {
|
|
await page.goto('/admin')
|
|
|
|
expect(page.url()).toContain('/auth/sign-in');
|
|
});
|
|
}) |