mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-09-14 12:12:20 +02:00
41 lines
2.0 KiB
JavaScript
41 lines
2.0 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { readFile } from 'node:fs/promises';
|
|
import { chromium } from 'playwright';
|
|
|
|
test('research primary actions use compact mobile sizing and retain desktop sizing', async () => {
|
|
const css = await readFile(new URL('../static/style.css', import.meta.url), 'utf8');
|
|
const browser = await chromium.launch({ headless: true });
|
|
try {
|
|
const page = await browser.newPage();
|
|
await page.setContent(`<div id="research-pane"><div id="research-past-list">
|
|
<div class="research-job-card"><div class="research-job-header">
|
|
<span class="research-job-query">A long research title that must still fit on a narrow phone</span>
|
|
<button class="task-status-badge research-job-report-badge" title="Open visual report"><svg></svg><span class="task-state-label">Visual Report</span></button>
|
|
<button class="task-status-badge research-job-discuss-badge" title="Discuss"><svg></svg><span class="task-state-label">Discuss</span></button>
|
|
</div></div></div></div>`);
|
|
await page.addStyleTag({ content: css });
|
|
for (const width of [320, 390, 600, 1024]) {
|
|
await page.setViewportSize({ width, height: 800 });
|
|
const buttons = await page.locator('.research-job-header button').evaluateAll(nodes => nodes.map(node => {
|
|
const rect = node.getBoundingClientRect();
|
|
return { width: rect.width, height: rect.height,
|
|
icon: node.querySelector('svg').getBoundingClientRect().width,
|
|
labelHidden: getComputedStyle(node.querySelector('.task-state-label')).display === 'none' };
|
|
}));
|
|
for (const button of buttons) {
|
|
if (width <= 600) {
|
|
assert.equal(button.width, 24);
|
|
assert.equal(button.height, 22);
|
|
assert.equal(button.icon, 10);
|
|
assert.equal(button.labelHidden, true);
|
|
} else {
|
|
assert.equal(button.height, 20);
|
|
assert.equal(button.icon, 10);
|
|
assert.equal(button.labelHidden, false);
|
|
}
|
|
}
|
|
}
|
|
} finally { await browser.close(); }
|
|
});
|