mirror of
https://github.com/maputnik/editor.git
synced 2025-12-06 06:10:00 +00:00
This does the following: 1. Moves the WDIO code from javascript to typescript 2. Moves to use files that are `cy.ts` instead of `index.js` 3. Replace e2e to use cypress 4. Introduce back some skipped tests This is in continue to the conversation here: https://github.com/HarelM/editor/pull/3 Before: ``` "spec" Reporter: ------------------------------------------------------------------ [chrome 120.0.6099.71 linux #0-0] Running: chrome (v120.0.6099.71) on linux [chrome 120.0.6099.71 linux #0-0] Session ID: ee9a87bcfce007ac7721929c6e6234d0 [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] » /test/functional/index.js [chrome 120.0.6099.71 linux #0-0] maputnik [chrome 120.0.6099.71 linux #0-0] history [chrome 120.0.6099.71 linux #0-0] - undo/redo [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] layers [chrome 120.0.6099.71 linux #0-0] ops [chrome 120.0.6099.71 linux #0-0] ✓ delete [chrome 120.0.6099.71 linux #0-0] ✓ duplicate [chrome 120.0.6099.71 linux #0-0] ✓ hide [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] background [chrome 120.0.6099.71 linux #0-0] ✓ add [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] modify [chrome 120.0.6099.71 linux #0-0] layer [chrome 120.0.6099.71 linux #0-0] - expand/collapse [chrome 120.0.6099.71 linux #0-0] ✓ id [chrome 120.0.6099.71 linux #0-0] ✓ min-zoom [chrome 120.0.6099.71 linux #0-0] ✓ max-zoom [chrome 120.0.6099.71 linux #0-0] ✓ comments [chrome 120.0.6099.71 linux #0-0] - color [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] filter [chrome 120.0.6099.71 linux #0-0] - expand/collapse [chrome 120.0.6099.71 linux #0-0] - compound filter [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] paint [chrome 120.0.6099.71 linux #0-0] - expand/collapse [chrome 120.0.6099.71 linux #0-0] - color [chrome 120.0.6099.71 linux #0-0] - pattern [chrome 120.0.6099.71 linux #0-0] - opacity [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] json-editor [chrome 120.0.6099.71 linux #0-0] - expand/collapse [chrome 120.0.6099.71 linux #0-0] - modify [chrome 120.0.6099.71 linux #0-0] - parse error [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] fill [chrome 120.0.6099.71 linux #0-0] ✓ add [chrome 120.0.6099.71 linux #0-0] - change source [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] line [chrome 120.0.6099.71 linux #0-0] ✓ add [chrome 120.0.6099.71 linux #0-0] - groups [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] symbol [chrome 120.0.6099.71 linux #0-0] ✓ add [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] raster [chrome 120.0.6099.71 linux #0-0] ✓ add [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] circle [chrome 120.0.6099.71 linux #0-0] ✓ add [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] fill extrusion [chrome 120.0.6099.71 linux #0-0] ✓ add [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] groups [chrome 120.0.6099.71 linux #0-0] ✓ simple [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] map [chrome 120.0.6099.71 linux #0-0] zoom level [chrome 120.0.6099.71 linux #0-0] - via url [chrome 120.0.6099.71 linux #0-0] - via map controls [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] modals [chrome 120.0.6099.71 linux #0-0] open [chrome 120.0.6099.71 linux #0-0] ✓ close [chrome 120.0.6099.71 linux #0-0] - upload [chrome 120.0.6099.71 linux #0-0] ✓ load from url [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] shortcuts [chrome 120.0.6099.71 linux #0-0] ✓ open/close [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] export [chrome 120.0.6099.71 linux #0-0] ✓ close [chrome 120.0.6099.71 linux #0-0] - download [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] sources [chrome 120.0.6099.71 linux #0-0] - active sources [chrome 120.0.6099.71 linux #0-0] - public source [chrome 120.0.6099.71 linux #0-0] - add new source [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] inspect [chrome 120.0.6099.71 linux #0-0] ✓ toggle [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] style settings [chrome 120.0.6099.71 linux #0-0] ✓ name [chrome 120.0.6099.71 linux #0-0] ✓ owner [chrome 120.0.6099.71 linux #0-0] ✓ sprite url [chrome 120.0.6099.71 linux #0-0] ✓ glyphs url [chrome 120.0.6099.71 linux #0-0] ✓ maptiler access token [chrome 120.0.6099.71 linux #0-0] ✓ thunderforest access token [chrome 120.0.6099.71 linux #0-0] ✓ style renderer [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] sources [chrome 120.0.6099.71 linux #0-0] - toggle [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] screenshots [chrome 120.0.6099.71 linux #0-0] ✓ front_page [chrome 120.0.6099.71 linux #0-0] ✓ open [chrome 120.0.6099.71 linux #0-0] ✓ export [chrome 120.0.6099.71 linux #0-0] ✓ sources [chrome 120.0.6099.71 linux #0-0] ✓ style settings [chrome 120.0.6099.71 linux #0-0] ✓ inspect [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] accessibility [chrome 120.0.6099.71 linux #0-0] skip links [chrome 120.0.6099.71 linux #0-0] ✓ skip link to layer list [chrome 120.0.6099.71 linux #0-0] ✓ skip link to layer editor [chrome 120.0.6099.71 linux #0-0] ✓ skip link to map view [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] keyboard [chrome 120.0.6099.71 linux #0-0] shortcuts [chrome 120.0.6099.71 linux #0-0] ✓ ESC should unfocus [chrome 120.0.6099.71 linux #0-0] ✓ '?' should show shortcuts modal [chrome 120.0.6099.71 linux #0-0] ✓ 'o' should show open modal [chrome 120.0.6099.71 linux #0-0] ✓ 'e' should show export modal [chrome 120.0.6099.71 linux #0-0] ✓ 'd' should show sources modal [chrome 120.0.6099.71 linux #0-0] ✓ 's' should show settings modal [chrome 120.0.6099.71 linux #0-0] - 'i' should change map to inspect mode [chrome 120.0.6099.71 linux #0-0] ✓ 'm' should focus map [chrome 120.0.6099.71 linux #0-0] ✓ '!' should show debug modal [chrome 120.0.6099.71 linux #0-0] [chrome 120.0.6099.71 linux #0-0] 44 passing (58.8s) [chrome 120.0.6099.71 linux #0-0] 23 skipped ``` After: ``` accessibility skip links - skip link to layer list - skip link to layer editor - skip link to map view history ✓ undo/redo (4894ms) keyboard shortcuts ✓ ESC should unfocus (1912ms) ✓ '?' should show shortcuts modal (458ms) ✓ 'o' should show open modal (710ms) ✓ 'e' should show export modal (692ms) ✓ 'd' should show sources modal (588ms) ✓ 's' should show settings modal (894ms) ✓ 'i' should change map to inspect mode (804ms) ✓ 'm' should focus map (837ms) ✓ '!' should show debug modal (607ms) layers ops ✓ delete (4313ms) ✓ duplicate (1780ms) ✓ hide (1862ms) background ✓ add (1675ms) modify layer - expand/collapse ✓ id (3735ms) ✓ min-zoom (2209ms) ✓ max-zoom (2127ms) ✓ comments (2515ms) ✓ color (2022ms) filter - expand/collapse - compound filter paint - expand/collapse - color - pattern - opacity json-editor - expand/collapse - modify - parse error fill ✓ add (1831ms) - change source line ✓ add (1844ms) ✓ groups (687ms) symbol ✓ add (2035ms) raster ✓ add (1814ms) circle ✓ add (1867ms) fill extrusion ✓ add (1963ms) groups ✓ simple (2653ms) map zoom level ✓ via url (2279ms) ✓ via map controls (733ms) modals open ✓ close (2519ms) - upload ✓ load from url (1557ms) shortcuts ✓ open/close (1136ms) export ✓ close (755ms) - download sources - active sources - public source - add new source inspect ✓ toggle (1020ms) style settings ✓ name (1085ms) ✓ owner (1060ms) ✓ sprite url (1214ms) ✓ glyphs url (1553ms) ✓ maptiler access token (1111ms) ✓ thunderforest access token (1102ms) ✓ style renderer (922ms) sources - toggle Spec Tests Passing Failing Pending Skipped ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ │ ✔ accessibility.cy.ts 52ms 3 - - 3 - │ ├────────────────────────────────────────────────────────────────────────────────────────────────┤ │ ✔ history.cy.ts 00:06 1 1 - - - │ ├────────────────────────────────────────────────────────────────────────────────────────────────┤ │ ✔ keyboard.cy.ts 00:10 9 9 - - - │ ├────────────────────────────────────────────────────────────────────────────────────────────────┤ │ ✔ layers.cy.ts 00:39 28 17 - 11 - │ ├────────────────────────────────────────────────────────────────────────────────────────────────┤ │ ✔ map.cy.ts 00:04 2 2 - - - │ ├────────────────────────────────────────────────────────────────────────────────────────────────┤ │ ✔ modals.cy.ts 00:16 18 12 - 6 - │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ✔ All specs passed! 01:18 61 41 - 20 - ``` --------- Co-authored-by: Yuri Astrakhan <yuriastrakhan@gmail.com>
428 lines
10 KiB
TypeScript
428 lines
10 KiB
TypeScript
var assert = require("assert");
|
|
import driver from "./driver";
|
|
import { v1 as uuid } from 'uuid';
|
|
|
|
describe("layers", () => {
|
|
beforeEach(() => {
|
|
driver.beforeEach();
|
|
driver.setStyle('both');
|
|
driver.openLayersModal();
|
|
});
|
|
|
|
describe("ops", () => {
|
|
it("delete", () => {
|
|
var id = driver.fillLayersModal({
|
|
type: "background"
|
|
})
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": 'background'
|
|
},
|
|
]);
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:"+id+":delete", ""))
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, []);
|
|
});
|
|
|
|
it("duplicate", () => {
|
|
var styleObj;
|
|
var id = driver.fillLayersModal({
|
|
type: "background"
|
|
})
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": 'background'
|
|
},
|
|
]);
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:"+id+":copy", ""));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id+"-copy",
|
|
"type": "background"
|
|
},
|
|
{
|
|
"id": id,
|
|
"type": "background"
|
|
},
|
|
]);
|
|
});
|
|
|
|
it("hide", () => {
|
|
var styleObj;
|
|
var id = driver.fillLayersModal({
|
|
type: "background"
|
|
})
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": 'background'
|
|
},
|
|
]);
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:"+id+":toggle-visibility", ""));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": "background",
|
|
"layout": {
|
|
"visibility": "none"
|
|
}
|
|
},
|
|
]);
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:"+id+":toggle-visibility", ""));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": "background",
|
|
"layout": {
|
|
"visibility": "visible"
|
|
}
|
|
},
|
|
]);
|
|
})
|
|
})
|
|
|
|
|
|
describe('background', () => {
|
|
|
|
it("add", () => {
|
|
var id = driver.fillLayersModal({
|
|
type: "background"
|
|
})
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": 'background'
|
|
}
|
|
]);
|
|
});
|
|
|
|
describe("modify", () => {
|
|
function createBackground() {
|
|
// Setup
|
|
var id = uuid();
|
|
|
|
driver.select(driver.getDataAttribute("add-layer.layer-type", "select"), "background");
|
|
driver.setValue(driver.getDataAttribute("add-layer.layer-id", "input"), "background:"+id);
|
|
|
|
driver.click(driver.getDataAttribute("add-layer"));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": 'background:'+id,
|
|
"type": 'background'
|
|
}
|
|
]);
|
|
return id;
|
|
}
|
|
|
|
// ====> THESE SHOULD BE FROM THE SPEC
|
|
describe("layer", () => {
|
|
it("expand/collapse");
|
|
it("id", () => {
|
|
var bgId = createBackground();
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:background:"+bgId));
|
|
|
|
var id = uuid();
|
|
driver.setValue(driver.getDataAttribute("layer-editor.layer-id", "input"), "foobar:"+id)
|
|
driver.click(driver.getDataAttribute("min-zoom"));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": 'foobar:'+id,
|
|
"type": 'background'
|
|
}
|
|
]);
|
|
});
|
|
|
|
it("min-zoom", () => {
|
|
var bgId = createBackground();
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:background:"+bgId));
|
|
driver.setValue(driver.getDataAttribute("min-zoom", 'input[type="text"]'), "1");
|
|
|
|
driver.click(driver.getDataAttribute("layer-editor.layer-id", "input"));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": 'background:'+bgId,
|
|
"type": 'background',
|
|
"minzoom": 1
|
|
}
|
|
]);
|
|
|
|
// AND RESET!
|
|
// driver.setValue(driver.getDataAttribute("min-zoom", "input"), "")
|
|
// driver.click(driver.getDataAttribute("max-zoom", "input"));
|
|
|
|
// driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
// {
|
|
// "id": 'background:'+bgId,
|
|
// "type": 'background'
|
|
// }
|
|
// ]);
|
|
});
|
|
|
|
it("max-zoom", () => {
|
|
var bgId = createBackground();
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:background:"+bgId));
|
|
driver.setValue(driver.getDataAttribute("max-zoom", 'input[type="text"]'), "1")
|
|
|
|
driver.click(driver.getDataAttribute("layer-editor.layer-id", "input"));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": 'background:'+bgId,
|
|
"type": 'background',
|
|
"maxzoom": 1
|
|
}
|
|
]);
|
|
});
|
|
|
|
it("comments", () => {
|
|
var bgId = createBackground();
|
|
var id = uuid();
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:background:"+bgId));
|
|
driver.setValue(driver.getDataAttribute("layer-comment", "textarea"), id);
|
|
|
|
driver.click(driver.getDataAttribute("layer-editor.layer-id", "input"));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": 'background:'+bgId,
|
|
"type": 'background',
|
|
metadata: {
|
|
'maputnik:comment': id
|
|
}
|
|
}
|
|
]);
|
|
|
|
// Unset it again.
|
|
// TODO: This fails
|
|
// driver.setValue(driver.getDataAttribute("layer-comment", "textarea"), "");
|
|
// driver.click(driver.getDataAttribute("min-zoom", "input"));
|
|
|
|
// driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
// {
|
|
// "id": 'background:'+bgId,
|
|
// "type": 'background'
|
|
// }
|
|
// ]);
|
|
});
|
|
|
|
it("color", () => {
|
|
var bgId = createBackground();
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:background:"+bgId));
|
|
|
|
driver.click(driver.getDataAttribute("spec-field:background-color", "input"));
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": 'background:'+bgId,
|
|
"type": 'background'
|
|
}
|
|
]);
|
|
|
|
})
|
|
})
|
|
|
|
describe("filter", () => {
|
|
it("expand/collapse");
|
|
it("compound filter");
|
|
})
|
|
|
|
describe("paint", () => {
|
|
it("expand/collapse");
|
|
it("color");
|
|
it("pattern");
|
|
it("opacity");
|
|
})
|
|
// <=====
|
|
|
|
describe("json-editor", () => {
|
|
it("expand/collapse");
|
|
it("modify");
|
|
|
|
// TODO
|
|
it.skip("parse error", () => {
|
|
var bgId = createBackground();
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-item:background:"+bgId));
|
|
|
|
var errorSelector = ".CodeMirror-lint-marker-error";
|
|
driver.doesNotExists(errorSelector);
|
|
|
|
driver.click(".CodeMirror");
|
|
driver.typeKeys("\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013\uE013 {");
|
|
driver.isExists(errorSelector);
|
|
|
|
driver.click(driver.getDataAttribute("layer-editor.layer-id"));
|
|
});
|
|
});
|
|
})
|
|
});
|
|
|
|
describe('fill', () => {
|
|
it("add", () => {
|
|
|
|
var id = driver.fillLayersModal({
|
|
type: "fill",
|
|
layer: "example"
|
|
});
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": 'fill',
|
|
"source": "example"
|
|
}
|
|
]);
|
|
})
|
|
|
|
// TODO: Change source
|
|
it("change source")
|
|
});
|
|
|
|
describe('line', () => {
|
|
it("add", () => {
|
|
var id = driver.fillLayersModal({
|
|
type: "line",
|
|
layer: "example"
|
|
});
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": "line",
|
|
"source": "example",
|
|
}
|
|
]);
|
|
});
|
|
|
|
it("groups", () => {
|
|
// TODO
|
|
// Click each of the layer groups.
|
|
})
|
|
});
|
|
|
|
describe('symbol', () => {
|
|
it("add", () => {
|
|
var id = driver.fillLayersModal({
|
|
type: "symbol",
|
|
layer: "example"
|
|
});
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": "symbol",
|
|
"source": "example",
|
|
}
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('raster', () => {
|
|
it("add", () => {
|
|
var id = driver.fillLayersModal({
|
|
type: "raster",
|
|
layer: "raster"
|
|
});
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": "raster",
|
|
"source": "raster",
|
|
}
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('circle', () => {
|
|
it("add", () => {
|
|
var id = driver.fillLayersModal({
|
|
type: "circle",
|
|
layer: "example"
|
|
});
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": "circle",
|
|
"source": "example",
|
|
}
|
|
]);
|
|
});
|
|
|
|
});
|
|
|
|
describe('fill extrusion', () => {
|
|
it("add", () => {
|
|
var id = driver.fillLayersModal({
|
|
type: "fill-extrusion",
|
|
layer: "example"
|
|
});
|
|
|
|
driver.isStyleStoreEqual((a: any) => a.layers, [
|
|
{
|
|
"id": id,
|
|
"type": 'fill-extrusion',
|
|
"source": "example"
|
|
}
|
|
]);
|
|
});
|
|
});
|
|
|
|
|
|
describe("groups", () => {
|
|
it("simple", () => {
|
|
driver.setStyle("geojson");
|
|
|
|
driver.openLayersModal();
|
|
driver.fillLayersModal({
|
|
id: "foo",
|
|
type: "background"
|
|
})
|
|
|
|
driver.openLayersModal();
|
|
driver.fillLayersModal({
|
|
id: "foo_bar",
|
|
type: "background"
|
|
})
|
|
|
|
driver.openLayersModal();
|
|
driver.fillLayersModal({
|
|
id: "foo_bar_baz",
|
|
type: "background"
|
|
})
|
|
|
|
driver.isDisplayedInViewport(driver.getDataAttribute("layer-list-item:foo"));
|
|
driver.isNotDisplayedInViewport(driver.getDataAttribute("layer-list-item:foo_bar"));
|
|
driver.isNotDisplayedInViewport(driver.getDataAttribute("layer-list-item:foo_bar_baz"));
|
|
|
|
driver.click(driver.getDataAttribute("layer-list-group:foo-0"));
|
|
|
|
driver.isDisplayedInViewport(driver.getDataAttribute("layer-list-item:foo"));
|
|
driver.isDisplayedInViewport(driver.getDataAttribute("layer-list-item:foo_bar"));
|
|
driver.isDisplayedInViewport(driver.getDataAttribute("layer-list-item:foo_bar_baz"));
|
|
})
|
|
})
|
|
});
|