74 lines
2.3 KiB
TypeScript
74 lines
2.3 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { LoginPage } from '../pages/LoginPage';
|
|
import { ProblemSetPage } from '../pages/ProblemSetPage';
|
|
import { ProblemPage } from '../pages/ProblemPage';
|
|
import { TEST_USER } from '../utils/test-data';
|
|
|
|
/**
|
|
* Test Suite: Problem Set
|
|
* Tests for browsing and viewing problems
|
|
*/
|
|
test.describe('Problem Set', () => {
|
|
// Login before each test
|
|
test.beforeEach(async ({ page }) => {
|
|
const loginPage = new LoginPage(page);
|
|
await loginPage.goto();
|
|
await loginPage.login(TEST_USER.email, TEST_USER.password);
|
|
await loginPage.verifyLoginSuccess();
|
|
});
|
|
|
|
test('should display problem list', async ({ page }) => {
|
|
const problemSetPage = new ProblemSetPage(page);
|
|
|
|
await problemSetPage.goto();
|
|
await problemSetPage.verifyOnPage();
|
|
|
|
// Verify problems are displayed
|
|
const problems = await problemSetPage.getVisibleProblems();
|
|
expect(problems.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
test('should navigate to problem detail page', async ({ page }) => {
|
|
const problemSetPage = new ProblemSetPage(page);
|
|
const problemPage = new ProblemPage(page);
|
|
|
|
await problemSetPage.goto();
|
|
|
|
// Get first problem ID
|
|
const problemId = await problemSetPage.getFirstProblemId();
|
|
expect(problemId).not.toBeNull();
|
|
|
|
if (problemId) {
|
|
// Click on the problem
|
|
await problemSetPage.clickProblem(problemId);
|
|
|
|
// Verify we are on problem page
|
|
await problemPage.verifyOnPage(problemId);
|
|
await problemPage.verifyProblemLoaded();
|
|
}
|
|
});
|
|
|
|
test('should display problem details correctly', async ({ page }) => {
|
|
const problemSetPage = new ProblemSetPage(page);
|
|
const problemPage = new ProblemPage(page);
|
|
|
|
await problemSetPage.goto();
|
|
|
|
const problemId = await problemSetPage.getFirstProblemId();
|
|
|
|
if (problemId) {
|
|
await problemPage.goto(problemId);
|
|
|
|
// Verify problem content is loaded
|
|
await problemPage.verifyProblemLoaded();
|
|
|
|
// Verify submit button is visible
|
|
await expect(problemPage.submitButton).toBeVisible();
|
|
|
|
// Get problem limits (optional, may not be visible on all problems)
|
|
const limits = await problemPage.getLimits();
|
|
console.log('Problem limits:', limits);
|
|
}
|
|
});
|
|
});
|