WIP; WIP 2 web: Flesh out fixtures, test IDs. web: Flesh out provider tests. web: Flesh out LDAP test. web: Fix typo. web: Allow base URL to be updated. web: Clean up. web: Tidy types. web: Update ARIA attributes for better test targeting. web: Clean up message labeling. web: Clean up ARIA labels. web: Flesh out table ARIA labels. web: Flesh out series. web: Fix linter. web: Clean up test reporting, timing issues. Add RADIUS test.
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
/* eslint-disable react-hooks/rules-of-hooks */
|
|
import { DeepLocatorProxy, createLocatorProxy } from "#e2e/elements/proxy";
|
|
import { FormFixture } from "#e2e/fixtures/FormFixture";
|
|
import { PointerFixture } from "#e2e/fixtures/PointerFixture";
|
|
import { SessionFixture } from "#e2e/fixtures/SessionFixture";
|
|
import { createOUIDNameEngine } from "#e2e/selectors/ouid";
|
|
import { type Page, test as base } from "@playwright/test";
|
|
|
|
export { expect } from "@playwright/test";
|
|
|
|
type TestIDLocatorProxy = DeepLocatorProxy<TestIDSelectorMap>;
|
|
|
|
interface E2EFixturesTestScope {
|
|
/**
|
|
* A proxy to retrieve elements by test ID.
|
|
*
|
|
* ```ts
|
|
* const $button = $.button;
|
|
* ```
|
|
*/
|
|
$: TestIDLocatorProxy;
|
|
session: SessionFixture;
|
|
pointer: PointerFixture;
|
|
form: FormFixture;
|
|
}
|
|
|
|
interface E2EWorkerScope {
|
|
selectorRegistration: void;
|
|
}
|
|
|
|
export const test = base.extend<E2EFixturesTestScope, E2EWorkerScope>({
|
|
selectorRegistration: [
|
|
async ({ playwright }, use) => {
|
|
await playwright.selectors.register("ouid", createOUIDNameEngine);
|
|
await use();
|
|
},
|
|
{ auto: true, scope: "worker" },
|
|
],
|
|
|
|
$: async ({ page }, use) => {
|
|
await use(createLocatorProxy<TestIDSelectorMap>(page));
|
|
},
|
|
|
|
session: async ({ page }, use, { title }) => {
|
|
await use(new SessionFixture(page, title));
|
|
},
|
|
|
|
form: async ({ page }, use, { title }) => {
|
|
await use(new FormFixture(page, title));
|
|
},
|
|
|
|
pointer: async ({ page }, use, { title }) => {
|
|
await use(new PointerFixture({ page, testName: title }));
|
|
},
|
|
});
|