Files
TOJE2E/tests/02-problemset.spec.ts
ChenKaiLiuG e139daa410 Initialize
2026-01-29 11:48:45 +08:00

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);
}
});
});