Compare commits

...

7 Commits

Author SHA1 Message Date
HarelM c0f1a72d80 Fix failing unit tests in CI 2026-07-08 22:43:34 +03:00
Harel M 8c86607100 Add alias for 'it' as 'test' in layers list spec 2026-07-08 15:35:34 +03:00
HarelM 18b34d3ecd Fix lint 2026-07-08 15:16:28 +03:00
HarelM 8344a30f5d Move things back to where this will still work. 2026-07-08 15:05:35 +03:00
Harel M 4249e9beb9 Merge branch 'main' into relocate-e2e-tests 2026-07-08 14:32:25 +03:00
HarelM f7b48139a4 test: adopt Playwright test()/test.describe() naming in e2e specs
Mechanical rename of it() -> test() and describe() -> test.describe() so the
subsequent Playwright migration diff only touches test bodies, not the
suite/case wrappers.
2026-07-08 12:42:13 +03:00
HarelM 8af1cfd5f8 test: relocate Cypress e2e suite to e2e/ ahead of Playwright migration
Pure file moves (no content changes) so git records them as renames and
history/blame is preserved through the migration that follows:
  cypress/e2e/*.cy.ts        -> e2e/*.spec.ts
  cypress/e2e/*-driver.ts    -> e2e/*-driver.ts
  cypress/fixtures/          -> e2e/fixtures/
  cypress.config.ts          -> playwright.config.ts
  InputAutocomplete.cy.tsx   -> InputAutocomplete.browser.test.tsx

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 12:24:03 +03:00
16 changed files with 140 additions and 113 deletions
+1
View File
@@ -10,6 +10,7 @@ export default defineConfig({
},
e2e: {
specPattern: "e2e/**/*.spec.ts",
setupNodeEvents(on, config) {
// implement node event listeners here
require("@cypress/code-coverage/task")(on, config);
@@ -1,5 +1,7 @@
import { MaputnikDriver } from "./maputnik-driver";
const test = it;
describe("accessibility", () => {
const { beforeAndAfter, get, when, then } = new MaputnikDriver();
beforeAndAfter();
@@ -9,7 +11,7 @@ describe("accessibility", () => {
when.setStyle("layer");
});
it("skip link to layer list", () => {
test("skip link to layer list", () => {
const selector = "root:skip:layer-list";
then(get.elementByTestId(selector)).shouldExist();
when.tab();
@@ -18,7 +20,7 @@ describe("accessibility", () => {
then(get.skipTargetLayerList()).shouldBeFocused();
});
it("skip link to layer editor", () => {
test("skip link to layer editor", () => {
const selector = "root:skip:layer-editor";
then(get.elementByTestId(selector)).shouldExist();
then(get.elementByTestId("skip-target-layer-editor")).shouldExist();
@@ -28,7 +30,7 @@ describe("accessibility", () => {
then(get.skipTargetLayerEditor()).shouldBeFocused();
});
it("skip link to map view", () => {
test("skip link to map view", () => {
const selector = "root:skip:map-view";
then(get.elementByTestId(selector)).shouldExist();
when.tab().tab().tab();
@@ -1,15 +1,17 @@
import { MaputnikDriver } from "./maputnik-driver";
const test = it;
describe("code editor", () => {
const { beforeAndAfter, when, get, then } = new MaputnikDriver();
beforeAndAfter();
it("open code editor", () => {
test("open code editor", () => {
when.click("nav:code-editor");
then(get.element(".maputnik-code-editor")).shouldExist();
});
it("closes code editor", () => {
test("closes code editor", () => {
when.click("nav:code-editor");
then(get.element(".maputnik-code-editor")).shouldExist();
when.click("nav:code-editor");
@@ -1,5 +1,7 @@
import { MaputnikDriver } from "./maputnik-driver";
const test = it;
describe("history", () => {
const { beforeAndAfter, when, get, then } = new MaputnikDriver();
beforeAndAfter();
@@ -13,7 +15,7 @@ describe("history", () => {
redoKeyCombo = isMac ? "{meta}{shift}z" : "{ctrl}y";
});
it("undo/redo", () => {
test("undo/redo", () => {
when.setStyle("geojson");
when.modal.open();
@@ -87,7 +89,7 @@ describe("history", () => {
});
});
it("should not redo after undo and value change", () => {
test("should not redo after undo and value change", () => {
when.setStyle("geojson");
when.modal.open();
when.modal.fillLayers({
+5 -3
View File
@@ -1,17 +1,19 @@
import { MaputnikDriver } from "./maputnik-driver";
const test = it;
describe("i18n", () => {
const { beforeAndAfter, get, when, then } = new MaputnikDriver();
beforeAndAfter();
describe("language detector", () => {
it("English", () => {
test("English", () => {
const url = "?lng=en";
when.visit(url);
then(get.elementByTestId("maputnik-lang-select")).shouldHaveValue("en");
});
it("Japanese", () => {
test("Japanese", () => {
const url = "?lng=ja";
when.visit(url);
then(get.elementByTestId("maputnik-lang-select")).shouldHaveValue("ja");
@@ -23,7 +25,7 @@ describe("i18n", () => {
when.setStyle("layer");
});
it("the language switcher switches to Japanese", () => {
test("the language switcher switches to Japanese", () => {
const selector = "maputnik-lang-select";
then(get.elementByTestId(selector)).shouldExist();
when.select(selector, "ja");
@@ -1,4 +1,5 @@
import { MaputnikDriver } from "./maputnik-driver";
const test = it;
describe("keyboard", () => {
const { beforeAndAfter, given, when, get, then } = new MaputnikDriver();
@@ -9,7 +10,7 @@ describe("keyboard", () => {
when.setStyle("");
});
it("ESC should unfocus", () => {
test("ESC should unfocus", () => {
const targetSelector = "maputnik-select";
when.focus(targetSelector);
then(get.elementByTestId(targetSelector)).shouldBeFocused();
@@ -17,42 +18,42 @@ describe("keyboard", () => {
then(get.elementByTestId(targetSelector)).shouldNotBeFocused();
});
it("'?' should show shortcuts modal", () => {
test("'?' should show shortcuts modal", () => {
when.typeKeys("?");
then(get.elementByTestId("modal:shortcuts")).shouldBeVisible();
});
it("'o' should show open modal", () => {
test("'o' should show open modal", () => {
when.typeKeys("o");
then(get.elementByTestId("modal:open")).shouldBeVisible();
});
it("'e' should show export modal", () => {
test("'e' should show export modal", () => {
when.typeKeys("e");
then(get.elementByTestId("modal:export")).shouldBeVisible();
});
it("'d' should show sources modal", () => {
test("'d' should show sources modal", () => {
when.typeKeys("d");
then(get.elementByTestId("modal:sources")).shouldBeVisible();
});
it("'s' should show settings modal", () => {
test("'s' should show settings modal", () => {
when.typeKeys("s");
then(get.elementByTestId("modal:settings")).shouldBeVisible();
});
it("'i' should change map to inspect mode", () => {
test("'i' should change map to inspect mode", () => {
when.typeKeys("i");
then(get.inputValue("maputnik-select")).shouldEqual("inspect");
});
it("'m' should focus map", () => {
test("'m' should focus map", () => {
when.typeKeys("m");
then(get.canvas()).shouldBeFocused();
});
it("'!' should show debug modal", () => {
test("'!' should show debug modal", () => {
when.typeKeys("!");
then(get.elementByTestId("modal:debug")).shouldBeVisible();
});
@@ -1,6 +1,8 @@
import { MaputnikDriver } from "./maputnik-driver";
import { v1 as uuid } from "uuid";
const test = it;
describe("layer editor", () => {
const { beforeAndAfter, get, when, then } = new MaputnikDriver();
beforeAndAfter();
@@ -28,8 +30,8 @@ describe("layer editor", () => {
return id;
}
it("expand/collapse");
it("id", () => {
test("expand/collapse");
test("id", () => {
const bgId = createBackground();
when.click("layer-list-item:background:" + bgId);
@@ -49,7 +51,7 @@ describe("layer editor", () => {
});
describe("source", () => {
it("should show error when the source is invalid", () => {
test("should show error when the source is invalid", () => {
when.modal.fillLayers({
type: "circle",
layer: "invalid",
@@ -68,7 +70,7 @@ describe("layer editor", () => {
when.click("layer-editor.layer-id");
});
it("should update min-zoom in local storage", () => {
test("should update min-zoom in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -105,7 +107,7 @@ describe("layer editor", () => {
when.click("layer-editor.layer-id");
});
it("should update style in local storage", () => {
test("should update style in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -129,7 +131,7 @@ describe("layer editor", () => {
when.click("layer-editor.layer-id");
});
it("should update style in local storage", () => {
test("should update style in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -149,7 +151,7 @@ describe("layer editor", () => {
when.click("min-zoom.input-text");
});
it("should update style in local storage", () => {
test("should update style in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -170,7 +172,7 @@ describe("layer editor", () => {
when.click("spec-field:background-color");
});
it("should update style in local storage", () => {
test("should update style in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -190,11 +192,11 @@ describe("layer editor", () => {
when.type("spec-field-input:background-opacity", "0.");
});
it("should keep '.' in the input field", () => {
test("should keep '.' in the input field", () => {
then(get.elementByTestId("spec-field-input:background-opacity")).shouldHaveValue("0.");
});
it("should revert to a valid value when focus out", () => {
test("should revert to a valid value when focus out", () => {
when.click("layer-list-item:background:" + bgId);
then(get.elementByTestId("spec-field-input:background-opacity")).shouldHaveValue("0");
});
@@ -203,12 +205,12 @@ describe("layer editor", () => {
describe("filter", () => {
it("expand/collapse");
it("compound filter");
test("expand/collapse");
test("compound filter");
});
describe("layout", () => {
it("text-font", () => {
test("text-font", () => {
when.setStyle("font");
when.collapseGroupInLayerEditor();
when.collapseGroupInLayerEditor(1);
@@ -222,14 +224,14 @@ describe("layer editor", () => {
});
describe("paint", () => {
it("expand/collapse");
it("color");
it("pattern");
it("opacity");
test("expand/collapse");
test("color");
test("pattern");
test("opacity");
});
describe("json-editor", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "circle",
layer: "example",
@@ -254,10 +256,10 @@ describe("layer editor", () => {
});
it("expand/collapse");
it("modify");
test("expand/collapse");
test("modify");
it("parse error", () => {
test("parse error", () => {
const bgId = createBackground();
when.click("layer-list-item:background:" + bgId);
@@ -273,7 +275,7 @@ describe("layer editor", () => {
});
describe("sticky header", () => {
it("should keep layer header visible when scrolling properties", () => {
test("should keep layer header visible when scrolling properties", () => {
// Setup: Create a layer with many properties (e.g., symbol layer)
when.modal.fillLayers({
type: "symbol",
@@ -1,4 +1,5 @@
import { MaputnikDriver } from "./maputnik-driver";
const test = it;
describe("layers list", () => {
const { beforeAndAfter, get, when, then } = new MaputnikDriver();
@@ -16,7 +17,7 @@ describe("layers list", () => {
});
});
it("should update layers in local storage", () => {
test("should update layers in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -31,7 +32,7 @@ describe("layers list", () => {
beforeEach(() => {
when.click("layer-list-item:" + id + ":delete");
});
it("should empty layers in local storage", () => {
test("should empty layers in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [],
});
@@ -42,7 +43,7 @@ describe("layers list", () => {
beforeEach(() => {
when.click("layer-list-item:" + id + ":copy");
});
it("should add copy layer in local storage", () => {
test("should add copy layer in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -63,7 +64,7 @@ describe("layers list", () => {
when.click("layer-list-item:" + id + ":toggle-visibility");
});
it("should update visibility to none in local storage", () => {
test("should update visibility to none in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -82,7 +83,7 @@ describe("layers list", () => {
when.click("layer-list-item:" + id + ":toggle-visibility");
});
it("should update visibility to visible in local storage", () => {
test("should update visibility to visible in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
layers: [
{
@@ -106,7 +107,7 @@ describe("layers list", () => {
type: "background",
});
});
it("should show the selected layer in the editor", () => {
test("should show the selected layer in the editor", () => {
when.realClick("layer-list-item:" + secondId);
then(get.elementByTestId("layer-editor.layer-id.input")).shouldHaveValue(secondId);
when.realClick("layer-list-item:" + id);
@@ -117,7 +118,7 @@ describe("layers list", () => {
});
describe("background", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "background",
});
@@ -135,7 +136,7 @@ describe("layers list", () => {
});
describe("fill", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "fill",
layer: "example",
@@ -153,11 +154,11 @@ describe("layers list", () => {
});
// TODO: Change source
it("change source");
test("change source");
});
describe("line", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "line",
layer: "example",
@@ -174,7 +175,7 @@ describe("layers list", () => {
});
});
it("groups", () => {
test("groups", () => {
when.modal.open();
const id1 = when.modal.fillLayers({
id: "aa",
@@ -230,7 +231,7 @@ describe("layers list", () => {
});
describe("symbol", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "symbol",
layer: "example",
@@ -247,7 +248,7 @@ describe("layers list", () => {
});
});
it("should show spec info when hovering and clicking single line property", () => {
test("should show spec info when hovering and clicking single line property", () => {
when.modal.fillLayers({
type: "symbol",
layer: "example",
@@ -259,7 +260,7 @@ describe("layers list", () => {
then(get.elementByTestId("spec-field-doc")).shouldContainText("Rotates the ");
});
it("should show spec info when hovering and clicking multi line property", () => {
test("should show spec info when hovering and clicking multi line property", () => {
when.modal.fillLayers({
type: "symbol",
layer: "example",
@@ -271,7 +272,7 @@ describe("layers list", () => {
then(get.elementByTestId("spec-field-doc")).shouldContainText("Offset distance");
});
it("should hide spec info when clicking a second time", () => {
test("should hide spec info when clicking a second time", () => {
when.modal.fillLayers({
type: "symbol",
layer: "example",
@@ -287,7 +288,7 @@ describe("layers list", () => {
});
describe("raster", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "raster",
layer: "raster",
@@ -306,7 +307,7 @@ describe("layers list", () => {
});
describe("circle", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "circle",
layer: "example",
@@ -325,7 +326,7 @@ describe("layers list", () => {
});
describe("fill extrusion", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "fill-extrusion",
layer: "example",
@@ -344,7 +345,7 @@ describe("layers list", () => {
});
describe("hillshade", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "hillshade",
layer: "example",
@@ -361,7 +362,7 @@ describe("layers list", () => {
});
});
it("set hillshade illumination direction array", () => {
test("set hillshade illumination direction array", () => {
const id = when.modal.fillLayers({
type: "hillshade",
layer: "example",
@@ -387,7 +388,7 @@ describe("layers list", () => {
});
});
it("set hillshade highlight color array", () => {
test("set hillshade highlight color array", () => {
const id = when.modal.fillLayers({
type: "hillshade",
layer: "example",
@@ -413,7 +414,7 @@ describe("layers list", () => {
});
describe("color-relief", () => {
it("add", () => {
test("add", () => {
const id = when.modal.fillLayers({
type: "color-relief",
layer: "example",
@@ -430,7 +431,7 @@ describe("layers list", () => {
});
});
it("adds elevation expression when clicking the elevation button", () => {
test("adds elevation expression when clicking the elevation button", () => {
when.modal.fillLayers({
type: "color-relief",
layer: "example",
@@ -442,7 +443,7 @@ describe("layers list", () => {
});
describe("groups", () => {
it("simple", () => {
test("simple", () => {
when.setStyle("geojson");
when.modal.open();
@@ -478,7 +479,7 @@ describe("layers list", () => {
});
describe("drag and drop", () => {
it("move layer should update local storage", () => {
test("move layer should update local storage", () => {
when.modal.open();
const firstId = when.modal.fillLayers({
id: "a",
@@ -517,7 +518,7 @@ describe("layers list", () => {
});
describe("sticky header", () => {
it("should keep header visible when scrolling layer list", () => {
test("should keep header visible when scrolling layer list", () => {
// Setup: Create multiple layers to enable scrolling
for (let i = 0; i < 20; i++) {
when.modal.open();
+8 -6
View File
@@ -1,10 +1,12 @@
import { MaputnikDriver } from "./maputnik-driver";
const test = it;
describe("map", () => {
const { beforeAndAfter, get, when, then } = new MaputnikDriver();
beforeAndAfter();
describe("zoom level", () => {
it("via url", () => {
test("via url", () => {
const zoomLevel = 12.37;
when.setStyle("geojson", zoomLevel);
then(get.elementByTestId("maplibre:ctrl-zoom")).shouldBeVisible();
@@ -13,7 +15,7 @@ describe("map", () => {
);
});
it("via map controls", () => {
test("via map controls", () => {
const zoomLevel = 12.37;
when.setStyle("geojson", zoomLevel);
then(get.elementByTestId("maplibre:ctrl-zoom")).shouldBeVisible();
@@ -23,7 +25,7 @@ describe("map", () => {
);
});
it("via style file definition", () => {
test("via style file definition", () => {
when.setStyle("zoom_7_center_0_51");
then(get.elementByTestId("maplibre:ctrl-zoom")).shouldBeVisible();
then(get.elementByTestId("maplibre:ctrl-zoom")).shouldContainText(
@@ -40,7 +42,7 @@ describe("map", () => {
});
describe("search", () => {
it("should exist", () => {
test("should exist", () => {
then(get.searchControl()).shouldBeVisible();
});
});
@@ -50,12 +52,12 @@ describe("map", () => {
when.setStyle("rectangles");
then(get.locationHash().should("exist"));
});
it("should open on feature click", () => {
test("should open on feature click", () => {
when.clickCenter("maplibre:map");
then(get.elementByTestId("feature-layer-popup")).shouldBeVisible();
});
it("should open a second feature after closing popup", () => {
test("should open a second feature after closing popup", () => {
when.clickCenter("maplibre:map");
then(get.elementByTestId("feature-layer-popup")).shouldBeVisible();
when.closePopup();
+40 -39
View File
@@ -1,5 +1,6 @@
import { MaputnikDriver } from "./maputnik-driver";
import tokens from "../../src/config/tokens.json" with {type: "json"};
import tokens from "../src/config/tokens.json" with {type: "json"};
const test = it;
describe("modals", () => {
const { beforeAndAfter, when, get, given, then } = new MaputnikDriver();
@@ -13,17 +14,17 @@ describe("modals", () => {
when.click("nav:open");
});
it("close", () => {
test("close", () => {
when.modal.close("modal:open");
then(get.elementByTestId("modal:open")).shouldNotExist();
});
it("upload", () => {
test("upload", () => {
when.chooseExampleFile();
then(get.fixture("example-style.json")).shouldEqualToStoredStyle();
});
it("upload via drag and drop", () => {
test("upload via drag and drop", () => {
when.dropExampleFile();
then(get.fixture("example-style.json")).shouldEqualToStoredStyle();
});
@@ -36,14 +37,14 @@ describe("modals", () => {
when.click("modal:open.url.button");
when.wait(200);
});
it("load from url", () => {
test("load from url", () => {
then(get.responseBody("example-style.json")).shouldEqualToStoredStyle();
});
});
});
describe("shortcuts", () => {
it("open/close", () => {
test("open/close", () => {
when.setStyle("");
when.typeKeys("?");
when.modal.close("modal:shortcuts");
@@ -56,13 +57,13 @@ describe("modals", () => {
when.click("nav:export");
});
it("close", () => {
test("close", () => {
when.modal.close("modal:export");
then(get.elementByTestId("modal:export")).shouldNotExist();
});
// TODO: Work out how to download a file and check the contents
it("download");
test("download");
});
describe("sources", () => {
@@ -71,10 +72,10 @@ describe("modals", () => {
when.click("nav:sources");
});
it("active sources");
it("public source");
test("active sources");
test("public source");
it("add new source", () => {
test("add new source", () => {
const sourceId = "n1z2v3r";
when.setValue("modal:sources.add.source_id", sourceId);
when.select("modal:sources.add.source_type", "tile_vector");
@@ -88,7 +89,7 @@ describe("modals", () => {
});
});
it("add new pmtiles source", () => {
test("add new pmtiles source", () => {
const sourceId = "pmtilestest";
when.setValue("modal:sources.add.source_id", sourceId);
when.select("modal:sources.add.source_type", "pmtiles_vector");
@@ -106,7 +107,7 @@ describe("modals", () => {
});
});
it("add new raster source", () => {
test("add new raster source", () => {
const sourceId = "rastertest";
when.setValue("modal:sources.add.source_id", sourceId);
when.select("modal:sources.add.source_type", "tile_raster");
@@ -123,7 +124,7 @@ describe("modals", () => {
});
describe("inspect", () => {
it("toggle", () => {
test("toggle", () => {
// There is no assertion in this test
when.setStyle("geojson");
when.select("maputnik-select", "inspect");
@@ -140,7 +141,7 @@ describe("modals", () => {
when.click("field-doc-button-Name");
});
it("should show the spec information", () => {
test("should show the spec information", () => {
then(get.elementsText("spec-field-doc")).shouldInclude(
"name for the style"
);
@@ -154,7 +155,7 @@ describe("modals", () => {
when.wait(200);
});
it("show name specifications", () => {
test("show name specifications", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
name: "foobar",
});
@@ -167,14 +168,14 @@ describe("modals", () => {
when.click("modal:settings.name");
when.wait(200);
});
it("should update owner in local storage", () => {
test("should update owner in local storage", () => {
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
owner: "foobar",
});
});
});
it("sprite url", () => {
test("sprite url", () => {
when.setTextInJsonEditor("\"http://example.com\"");
when.click("modal:settings.name");
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
@@ -182,7 +183,7 @@ describe("modals", () => {
});
});
it("sprite object", () => {
test("sprite object", () => {
when.setTextInJsonEditor(JSON.stringify([{ id: "1", url: "2" }]));
when.click("modal:settings.name");
@@ -191,7 +192,7 @@ describe("modals", () => {
});
});
it("glyphs url", () => {
test("glyphs url", () => {
const glyphsUrl = "http://example.com/{fontstack}/{range}.pbf";
when.setValue("modal:settings.glyphs", glyphsUrl);
when.click("modal:settings.name");
@@ -200,7 +201,7 @@ describe("modals", () => {
});
});
it("maptiler access token", () => {
test("maptiler access token", () => {
const apiKey = "testing123";
when.setValue(
"modal:settings.maputnik:openmaptiles_access_token",
@@ -214,7 +215,7 @@ describe("modals", () => {
});
});
it("thunderforest access token", () => {
test("thunderforest access token", () => {
const apiKey = "testing123";
when.setValue(
"modal:settings.maputnik:thunderforest_access_token",
@@ -226,7 +227,7 @@ describe("modals", () => {
).shouldInclude({ "maputnik:thunderforest_access_token": apiKey });
});
it("stadia access token", () => {
test("stadia access token", () => {
const apiKey = "testing123";
when.setValue(
"modal:settings.maputnik:stadia_access_token",
@@ -238,7 +239,7 @@ describe("modals", () => {
).shouldInclude({ "maputnik:stadia_access_token": apiKey });
});
it("locationiq access token", () => {
test("locationiq access token", () => {
const apiKey = "testing123";
when.setValue(
"modal:settings.maputnik:locationiq_access_token",
@@ -250,14 +251,14 @@ describe("modals", () => {
).shouldInclude({ "maputnik:locationiq_access_token": apiKey });
});
it("style projection mercator", () => {
test("style projection mercator", () => {
when.select("modal:settings.projection", "mercator");
then(
get.styleFromLocalStorage().then((style) => style.projection)
).shouldInclude({ type: "mercator" });
});
it("style projection globe", () => {
test("style projection globe", () => {
when.select("modal:settings.projection", "globe");
then(
get.styleFromLocalStorage().then((style) => style.projection)
@@ -265,7 +266,7 @@ describe("modals", () => {
});
it("style projection vertical-perspective", () => {
test("style projection vertical-perspective", () => {
when.select("modal:settings.projection", "vertical-perspective");
then(
get.styleFromLocalStorage().then((style) => style.projection)
@@ -273,7 +274,7 @@ describe("modals", () => {
});
it("style renderer", () => {
test("style renderer", () => {
cy.on("uncaught:exception", () => false); // this is due to the fact that this is an invalid style for openlayers
when.select("modal:settings.maputnik:renderer", "ol");
then(get.inputValue("modal:settings.maputnik:renderer")).shouldEqual(
@@ -288,7 +289,7 @@ describe("modals", () => {
it("include API key when change renderer", () => {
test("include API key when change renderer", () => {
when.click("modal:settings.close-modal");
when.click("nav:open");
@@ -327,7 +328,7 @@ describe("modals", () => {
when.modal.open();
});
it("shows duplicate id error", () => {
test("shows duplicate id error", () => {
when.setValue("add-layer.layer-id.input", "background");
when.click("add-layer");
then(get.elementByTestId("modal:add-layer")).shouldExist();
@@ -338,7 +339,7 @@ describe("modals", () => {
});
describe("sources", () => {
it("toggle");
test("toggle");
});
describe("global state", () => {
@@ -346,7 +347,7 @@ describe("modals", () => {
when.click("nav:global-state");
});
it("add variable", () => {
test("add variable", () => {
when.wait(100);
when.click("global-state-add-variable");
then(get.styleFromLocalStorage()).shouldDeepNestedInclude({
@@ -355,7 +356,7 @@ describe("modals", () => {
});
it("add multiple variables", () => {
test("add multiple variables", () => {
when.click("global-state-add-variable");
when.click("global-state-add-variable");
when.click("global-state-add-variable");
@@ -365,7 +366,7 @@ describe("modals", () => {
});
});
it("remove variable", () => {
test("remove variable", () => {
when.click("global-state-add-variable");
when.click("global-state-add-variable");
when.click("global-state-add-variable");
@@ -376,7 +377,7 @@ describe("modals", () => {
});
});
it("edit variable key", () => {
test("edit variable key", () => {
when.click("global-state-add-variable");
when.wait(100);
when.setValue("global-state-variable-key:0", "mykey");
@@ -387,7 +388,7 @@ describe("modals", () => {
});
});
it("edit variable value", () => {
test("edit variable value", () => {
when.click("global-state-add-variable");
when.wait(100);
when.setValue("global-state-variable-value:0", "myvalue");
@@ -400,11 +401,11 @@ describe("modals", () => {
});
describe("error panel", () => {
it("not visible when no errors", () => {
test("not visible when no errors", () => {
then(get.element("maputnik-message-panel-error")).shouldNotExist();
});
it("visible on style error", () => {
test("visible on style error", () => {
when.modal.open();
when.modal.fillLayers({
type: "circle",
@@ -415,7 +416,7 @@ describe("modals", () => {
});
describe("Handle localStorage QuotaExceededError", () => {
it("handles quota exceeded error when opening style from URL", () => {
test("handles quota exceeded error when opening style from URL", () => {
// Clear localStorage to start fresh
cy.clearLocalStorage();
+1 -1
View File
@@ -21,7 +21,7 @@
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src", "cypress/e2e"],
"include": ["src", "cypress/e2e", "e2e/maputnik-cypress-helper.ts"],
"exclude": ["dist"],
"references": [{ "path": "./tsconfig.node.json" }],
// TODO: Remove when issue is resolved https://github.com/cypress-io/cypress/issues/27448
+11
View File
@@ -0,0 +1,11 @@
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
// Only the unit tests that live next to the source are run by Vitest. The
// e2e specs (*.spec.ts) are run by their own runner, and the component
// browser test is run separately.
include: ["src/**/*.test.{ts,tsx}"],
exclude: ["**/node_modules/**", "e2e/**", "**/*.browser.test.tsx"],
},
});