Files

36 lines
1.9 KiB
JavaScript

import fs from 'node:fs/promises';
import path from 'node:path';
import assert from 'node:assert/strict';
import { launchChromium } from '../../scripts/orgchart-browser-runtime.mjs';
const output = path.resolve('test-results/org-chart-p11');
const browser = await launchChromium({ headless: true });
const page = await browser.newPage({ viewport: { width: 1440, height: 900 } });
const errors = [], checks = [];
page.on('pageerror', error => errors.push(error.message));
page.on('console', message => { if (message.type() === 'error') errors.push(message.text()); });
try {
for (const [id, selector] of [
['full-composition', '.hm-orgchart-composition[data-display-mode="readOnly"]'],
['expanded-org-chart', '.hm-orgchart-expanded'],
['department-colors', '.hm-orgchart-department-colors'],
['logo-personnel-summary', '.hm-orgchart-affiliation-mark'],
]) {
await page.goto(`http://127.0.0.1:6034/iframe.html?id=orgchart--${id}&viewMode=story`);
await page.locator(selector).first().waitFor();
await page.evaluate(async () => { await document.fonts.ready; await new Promise(resolve => setTimeout(resolve, 800)); });
if (id === 'department-colors') {
const gradients = await page.locator('.hm-orgchart-color-preview .hm-orgchart-color-department-name').evaluateAll(headings => headings.map(heading => getComputedStyle(heading).backgroundImage));
assert.equal(gradients.length, 6);
assert.ok(gradients.every(gradient => gradient !== 'none'));
assert.equal(new Set(gradients).size, 6);
}
await page.screenshot({ path: path.join(output, `storybook-${id}.png`) });
checks.push({ name: id, status: 'PASS' });
}
assert.deepEqual(errors, []);
} finally {
await fs.writeFile(path.join(output, 'storybook-result.json'), JSON.stringify({ checks, errors }, null, 2));
await browser.close();
}
console.log(`Storybook: ${checks.length} checks, ${errors.length} errors`);