feat: The Other Dude v9.0.1 — full-featured email system
ci: add GitHub Pages deployment workflow for docs site Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
29
frontend/tests/e2e/pages/dashboard.page.ts
Normal file
29
frontend/tests/e2e/pages/dashboard.page.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import type { Page } from '@playwright/test'
|
||||
|
||||
/**
|
||||
* Page Object Model for the fleet dashboard (/).
|
||||
* Encapsulates selectors for dashboard elements.
|
||||
*/
|
||||
export class DashboardPage {
|
||||
constructor(private page: Page) {}
|
||||
|
||||
async goto() {
|
||||
await this.page.goto('/')
|
||||
}
|
||||
|
||||
get heading() {
|
||||
return this.page.getByRole('heading').first()
|
||||
}
|
||||
|
||||
get sidebar() {
|
||||
return this.page.locator('nav').first()
|
||||
}
|
||||
|
||||
get deviceRows() {
|
||||
return this.page.locator('table tbody tr, [role="row"]')
|
||||
}
|
||||
|
||||
get kpiCards() {
|
||||
return this.page.locator('[class*="card"], [class*="Card"]')
|
||||
}
|
||||
}
|
||||
35
frontend/tests/e2e/pages/login.page.ts
Normal file
35
frontend/tests/e2e/pages/login.page.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import type { Page } from '@playwright/test'
|
||||
|
||||
/**
|
||||
* Page Object Model for the login page (/login).
|
||||
* Encapsulates selectors and actions for login form interaction.
|
||||
*/
|
||||
export class LoginPage {
|
||||
constructor(private page: Page) {}
|
||||
|
||||
async goto() {
|
||||
await this.page.goto('/login')
|
||||
}
|
||||
|
||||
async login(email: string, password: string) {
|
||||
await this.page.getByLabel(/email/i).fill(email)
|
||||
await this.page.getByLabel(/password/i).fill(password)
|
||||
await this.page.getByRole('button', { name: /sign in/i }).click()
|
||||
}
|
||||
|
||||
get emailInput() {
|
||||
return this.page.getByLabel(/email/i)
|
||||
}
|
||||
|
||||
get passwordInput() {
|
||||
return this.page.getByLabel(/password/i)
|
||||
}
|
||||
|
||||
get submitButton() {
|
||||
return this.page.getByRole('button', { name: /sign in/i })
|
||||
}
|
||||
|
||||
get errorMessage() {
|
||||
return this.page.locator('.text-error')
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user