Files
editor/e2e/modal-driver.ts
T
2026-07-09 15:05:18 +03:00

39 lines
1.3 KiB
TypeScript

import { v1 as uuid } from "uuid";
import type { MaputnikDriver } from "./maputnik-driver";
export class ModalDriver {
constructor(private readonly driver: MaputnikDriver) {}
public when = {
fillLayers: async (opts: { type: string; layer?: string; id?: string }) => {
const { when, get, then } = this.driver;
const id = opts.id ?? `${opts.type}:${uuid()}`;
await when.select("add-layer.layer-type.select", opts.type);
await when.type("add-layer.layer-id.input", id);
if (opts.layer) {
const input = get.elementByTestId("add-layer.layer-source-block").locator("input");
await input.click();
await input.fill(opts.layer);
// The source input is a controlled downshift combobox; wait for React to
// settle on the typed value before submitting.
await then(input).shouldHaveValue(opts.layer);
// Close the autocomplete menu so it does not intercept the add button.
await get.elementByTestId("add-layer.layer-id.input").click();
}
await when.click("add-layer");
return id;
},
open: async () => {
await this.driver.when.click("layer-list:add-layer");
},
close: async (key: string) => {
await this.driver.when.click(key + ".close-modal");
},
};
}