115 lines
3.0 KiB
TypeScript
115 lines
3.0 KiB
TypeScript
import { Page, Locator } from "@playwright/test";
|
|
import { BUCKET_LIST_PAGE } from "../consts";
|
|
|
|
export class CreateBucketPage {
|
|
page: Page;
|
|
|
|
/* Locators */
|
|
|
|
submitBtn: Locator | undefined;
|
|
clearBtn: Locator | undefined;
|
|
bucketNameInput: Locator | undefined;
|
|
versioningToggle: Locator | undefined;
|
|
lockingToggle: Locator | undefined;
|
|
quotaToggle: Locator | undefined;
|
|
bucketNamingRules: Locator | undefined;
|
|
|
|
bucketRetentionToggle: Locator | undefined;
|
|
quotaSizeInput: Locator | undefined;
|
|
retentionModeRadio: Locator | undefined;
|
|
retentionValidity: Locator | undefined;
|
|
|
|
constructor(page: Page) {
|
|
this.page = page;
|
|
this.initLocators();
|
|
}
|
|
getLocator(selector: string): Locator {
|
|
const page = this.page;
|
|
const locator: Locator = page.locator(`${selector}`);
|
|
return locator;
|
|
}
|
|
|
|
initLocators() {
|
|
this.submitBtn = this.getLocator("#create-bucket");
|
|
this.clearBtn = this.getLocator("#clear");
|
|
this.versioningToggle = this.getLocator("#versioned-switch");
|
|
this.lockingToggle = this.getLocator("#locking-switch");
|
|
this.quotaToggle = this.getLocator("#bucket_quota-switch");
|
|
this.bucketNamingRules = this.getLocator("#toggle-naming-rules");
|
|
this.bucketNameInput = this.getLocator("#bucket-name");
|
|
}
|
|
|
|
//Lazy/Conditional selectors Note: These respective methods must be called before using them.
|
|
onVersioningToggleOn() {
|
|
this.bucketRetentionToggle = this.getLocator("#bucket_retention");
|
|
}
|
|
|
|
onBucketQuotaToggleOn() {
|
|
this.quotaSizeInput = this.getLocator("#quota_size");
|
|
}
|
|
|
|
onRetentionToggleOn() {
|
|
this.retentionModeRadio = this.getLocator("#retention_mode");
|
|
this.retentionValidity = this.getLocator("#retention_validity");
|
|
}
|
|
|
|
loadPage() {
|
|
const page = this.page;
|
|
page.goto(BUCKET_LIST_PAGE);
|
|
}
|
|
|
|
async fillBucketName(bucketName: string) {
|
|
await this.bucketNameInput?.click();
|
|
await this.bucketNameInput?.fill(bucketName);
|
|
}
|
|
|
|
async toggleBucketNamingRules() {
|
|
await this.bucketNamingRules?.click();
|
|
}
|
|
|
|
async toggleVersioning() {
|
|
await this.versioningToggle?.check();
|
|
this.onVersioningToggleOn();
|
|
//expect to be on
|
|
}
|
|
|
|
async toggleObjectLocking() {
|
|
await this.lockingToggle?.click();
|
|
this.onVersioningToggleOn();
|
|
this.onRetentionToggleOn();
|
|
}
|
|
|
|
async toggleBucketQuota() {
|
|
await this.quotaToggle?.click();
|
|
this.onBucketQuotaToggleOn();
|
|
}
|
|
|
|
async toggleRetention() {
|
|
await this.bucketRetentionToggle?.click();
|
|
}
|
|
|
|
async submitForm() {
|
|
await this.submitBtn?.click();
|
|
}
|
|
|
|
//Convenience Methods for easy testing
|
|
|
|
//create a bucket without any features like versioning, locking, quota etc.
|
|
async createBucket(bucketName: string) {
|
|
await this.fillBucketName(bucketName);
|
|
await this.submitForm();
|
|
}
|
|
|
|
//create a bucket with versioning feature
|
|
async createVersionedBucket(bucketName: string) {
|
|
await this.fillBucketName(bucketName);
|
|
await this.toggleVersioning();
|
|
await this.submitForm();
|
|
}
|
|
//create a bucket with locking feature
|
|
|
|
async goToCreateBucket() {
|
|
await this.submitBtn?.click();
|
|
}
|
|
}
|