2
0

register.page.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { Page, Locator, expect } from '@playwright/test';
  2. export class RegisterPage {
  3. readonly page: Page;
  4. readonly usernameInput: Locator;
  5. readonly passwordInput: Locator;
  6. readonly confirmPasswordInput: Locator;
  7. readonly registerButton: Locator;
  8. readonly loginLink: Locator;
  9. readonly errorMessage: Locator;
  10. constructor(page: Page) {
  11. this.page = page;
  12. this.usernameInput = page.getByPlaceholder('请输入用户名');
  13. this.passwordInput = page.getByPlaceholder('请输入密码');
  14. this.confirmPasswordInput = page.getByPlaceholder('请再次输入密码');
  15. this.registerButton = page.getByRole('button', { name: '注册账号' });
  16. this.loginLink = page.getByRole('link', { name: '立即登录' });
  17. this.errorMessage = page.locator('[data-sonner-toast]');
  18. }
  19. async goto() {
  20. await this.page.goto('/register');
  21. await this.page.waitForLoadState('networkidle');
  22. }
  23. async register(username: string, password: string, confirmPassword?: string) {
  24. await this.usernameInput.fill(username);
  25. await this.passwordInput.fill(password);
  26. await this.confirmPasswordInput.fill(confirmPassword || password);
  27. await this.registerButton.click();
  28. }
  29. async expectRegistrationSuccess() {
  30. await expect(this.page).toHaveURL('/');
  31. await expect(this.page.locator('text=注册成功')).toBeVisible();
  32. }
  33. async expectRegistrationError() {
  34. await expect(this.errorMessage).toBeVisible();
  35. }
  36. async navigateToLogin() {
  37. await this.loginLink.click();
  38. }
  39. }