41 lines
		
	
	
		
			965 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			965 B
		
	
	
	
		
			TypeScript
		
	
	
import {
 | 
						|
  type Page,
 | 
						|
  type Locator,
 | 
						|
  test as base,
 | 
						|
  expect,
 | 
						|
} from "@playwright/test";
 | 
						|
 | 
						|
export class AuthPage {
 | 
						|
  public readonly wrongCredentials: Locator;
 | 
						|
 | 
						|
  constructor(public readonly page: Page) {
 | 
						|
    this.wrongCredentials = this.page.locator("div.wrong");
 | 
						|
  }
 | 
						|
 | 
						|
  async goto() {
 | 
						|
    await this.page.goto("/login");
 | 
						|
  }
 | 
						|
 | 
						|
  async loginAs(username = "admin", password = "admin") {
 | 
						|
    await this.page.getByPlaceholder("Username").fill(username);
 | 
						|
    await this.page.getByPlaceholder("Password").fill(password);
 | 
						|
    await this.page.getByRole("button", { name: "Login" }).click();
 | 
						|
  }
 | 
						|
 | 
						|
  async logout() {
 | 
						|
    await this.page.getByRole("button", { name: "Logout" }).click();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
const test = base.extend<{ authPage: AuthPage }>({
 | 
						|
  authPage: async ({ page }, use) => {
 | 
						|
    const authPage = new AuthPage(page);
 | 
						|
    await authPage.goto();
 | 
						|
    await authPage.loginAs();
 | 
						|
    await use(authPage);
 | 
						|
    // await authPage.logout();
 | 
						|
  },
 | 
						|
});
 | 
						|
 | 
						|
export { test, expect };
 |