mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-28 19:01:34 +00:00
55 lines
2.1 KiB
JavaScript
55 lines
2.1 KiB
JavaScript
import { launch, checkAll, finish } from './serve.mjs';
|
|
|
|
const { page, browser } = await launch();
|
|
const result = await page.evaluate(async () => {
|
|
const card = window.__card;
|
|
const root = () => card.shadowRoot || card.renderRoot;
|
|
card._openSettingsDialog();
|
|
await card.updateComplete;
|
|
const group = [...root().querySelectorAll('.dispsection')]
|
|
.some((node) => node.textContent.trim() === card._t('gs.backup_group'));
|
|
const actions = root().querySelectorAll('.backupactions .btn').length;
|
|
const importTrigger = root().querySelector('.backupupload > button');
|
|
importTrigger?.focus();
|
|
const keyboardImport = importTrigger?.tagName === 'BUTTON'
|
|
&& importTrigger.tabIndex === 0
|
|
&& importTrigger.matches(':focus');
|
|
|
|
card._openBackupExport();
|
|
await card.updateComplete;
|
|
const exportRadios = root().querySelectorAll('input[name="backup-kind"]').length;
|
|
const exportWarning = !!root().querySelector('.backupwarn');
|
|
|
|
card._backupExportDialog = null;
|
|
card._backupImportDialog = {
|
|
filename: 'backup.json', size: 1024, token: 'opaque',
|
|
preview: {
|
|
kind: 'full', source: 'foreign', created_at: '2026-08-11T00:00:00Z',
|
|
counts: { spaces: 1, rooms: 2, markers: 3, layout: 4 },
|
|
confirmation_required: true,
|
|
content: [{ url: '/api/houseplan/content/plans/_/floor.svg', state: 'detach_required' }],
|
|
},
|
|
expectedConfigRev: 1, expectedLayoutRev: 2, duplicatePolicy: 'skip',
|
|
confirmMissing: false, busy: false, error: '',
|
|
};
|
|
await card.updateComplete;
|
|
const apply = root().querySelector('hp-dialog .btn.danger');
|
|
const importSafe = {
|
|
danger: !!apply,
|
|
disabledUntilConfirmed: !!apply?.disabled,
|
|
noHorizontalOverflow: root().querySelector('hp-dialog').scrollWidth
|
|
<= root().querySelector('hp-dialog').clientWidth,
|
|
};
|
|
return { group, actions, keyboardImport, exportRadios, exportWarning, importSafe };
|
|
});
|
|
|
|
checkAll(result, {
|
|
group: true,
|
|
actions: 2,
|
|
keyboardImport: true,
|
|
exportRadios: 2,
|
|
exportWarning: true,
|
|
importSafe: { danger: true, disabledUntilConfirmed: true, noHorizontalOverflow: true },
|
|
});
|
|
await finish(browser, result);
|