100 lines
4.7 KiB
TypeScript
100 lines
4.7 KiB
TypeScript
// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
|
|
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
|
|
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
|
|
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
|
|
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
|
// ┃ Copyright (c) 2017, the Perspective Authors. ┃
|
|
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
|
|
// ┃ This file is part of the Perspective library, distributed under the terms ┃
|
|
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
|
|
import {
|
|
test,
|
|
getSvgContentString,
|
|
compareSVGContentsToSnapshot,
|
|
PageView,
|
|
} from "@perspective-dev/test";
|
|
|
|
import EXAMPLES from "../../src/components/ExampleGallery/features";
|
|
|
|
test.describe.configure({ mode: "parallel" });
|
|
|
|
test.describe("Examples", () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("docs/template.html");
|
|
await page.evaluate(async () => {
|
|
while (!window["__TEST_PERSPECTIVE_READY__"]) {
|
|
await new Promise((x) => setTimeout(x, 10));
|
|
}
|
|
});
|
|
});
|
|
|
|
for (const idx in EXAMPLES.default) {
|
|
const example = EXAMPLES.default[idx];
|
|
test(`${idx} - ${example.name}`, async ({ page }) => {
|
|
const { config } = example;
|
|
const new_config = Object.assign(
|
|
{
|
|
plugin: "Datagrid",
|
|
group_by: [],
|
|
expressions: {},
|
|
split_by: [],
|
|
sort: [],
|
|
aggregates: {},
|
|
},
|
|
config,
|
|
);
|
|
await page.evaluate(async (config) => {
|
|
const viewer = document.querySelector("perspective-viewer");
|
|
viewer?.addEventListener("perspective-config-update", (e) => {
|
|
window.__CONFIG_UPDATED__ = true;
|
|
console.log(e);
|
|
});
|
|
await viewer.reset();
|
|
await viewer.restore(config);
|
|
}, new_config);
|
|
|
|
if (Object.keys(config).length !== 0) {
|
|
await page.evaluate(async () => {
|
|
while (!window["__CONFIG_UPDATED__"]) {
|
|
await new Promise((x) => setTimeout(x, 10));
|
|
}
|
|
});
|
|
}
|
|
|
|
let selector = "";
|
|
if (new_config.plugin === "Datagrid") {
|
|
selector = "perspective-viewer-datagrid";
|
|
} else {
|
|
const plugin = new_config.plugin
|
|
.replace(/[-\/\s]/gi, "")
|
|
.toLowerCase();
|
|
selector = `perspective-viewer-charts-${plugin}`;
|
|
}
|
|
|
|
await compareSVGContentsToSnapshot(page, selector, [
|
|
`${idx}-${example.name}.txt`,
|
|
]);
|
|
});
|
|
}
|
|
});
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("docs/template.html");
|
|
await page.evaluate(async () => {
|
|
while (!window["__TEST_PERSPECTIVE_READY__"]) {
|
|
await new Promise((x) => setTimeout(x, 10));
|
|
}
|
|
});
|
|
});
|
|
test("test svgs", async ({ page }) => {
|
|
const viewer = new PageView(page);
|
|
await viewer.restore({ plugin: "X/Y Scatter" });
|
|
const contents = await getSvgContentString(
|
|
"perspective-viewer-charts-xyscatter",
|
|
)(page);
|
|
console.log(contents);
|
|
});
|