ZDDC/tests/transmittal-init-check.spec.js
2026-06-11 13:32:31 -05:00

66 lines
3.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { test, expect } from '@playwright/test';
import { MOCK_FS_INIT_SCRIPT } from './fixtures/mock-fs-api.js';
const HTML_PATH = '/home/user/src/zddc/transmittal/dist/transmittal.html';
test.describe('Transmittal initial state validation (detailed check)', () => {
test.beforeEach(async ({ page }) => {
await page.addInitScript(MOCK_FS_INIT_SCRIPT);
});
test('should show NOT VALIDATED warning and check signature/digest elements', async ({ page }) => {
await page.goto(`file://${HTML_PATH}`, { waitUntil: 'networkidle' });
// Collect console errors
const errors = [];
page.on('console', msg => {
if (msg.type() === 'error') {
errors.push(msg.text());
}
});
// Wait for page to stabilize
await page.waitForTimeout(500);
// 1. Check if "Not Validated (requires JavaScript)" warning is visible
// With the CSS fix, the static warning is now hidden by default when JS is available
const warningLocator = page.locator('text=Not Validated (requires JavaScript)');
const warningIsVisible = await warningLocator.isVisible();
// 2. Check signature-status-static element state
// The element has display:none from CSS, not hidden property (JS may set that too)
const signatureStatus = page.locator('#signature-status-static');
const signatureHiddenAttr = await signatureStatus.getAttribute('hidden');
const signatureHiddenProp = await signatureStatus.evaluate(el => el.hidden);
const signatureVisibility = await signatureStatus.evaluate(el => getComputedStyle(el).visibility);
const signatureDisplay = await signatureStatus.evaluate(el => getComputedStyle(el).display);
// 3. Check digest-display element content
const digestContent = await page.locator('#digest-display').textContent();
const digestComputedStyle = await page.locator('#digest-display').evaluate(el => getComputedStyle(el));
const digestDisplay = digestComputedStyle.display;
const digestVisibility = digestComputedStyle.visibility;
// 4. Check if there are any other visible elements we should report
const signatureStatusText = await signatureStatus.textContent();
const digestHasChildren = await page.locator('#digest-display').evaluate(el => el.children.length);
// Report all findings
console.log('=== INITIAL STATE CHECK ===');
console.log('Warning visible:', warningIsVisible);
console.log('signature-status-static display:', signatureDisplay);
console.log('signature-status-static visibility:', signatureVisibility);
console.log('signature-status-basic text:', signatureStatusText);
console.log('digest-display content:', JSON.stringify(digestContent));
console.log('digest-display display:', digestDisplay);
console.log('digest-display visibility:', digestVisibility);
console.log('digest-display children count:', digestHasChildren);
console.log('console errors:', errors);
// Assertions - with CSS fix, static warning should be hidden
expect(warningIsVisible).toBe(false); // Hidden by CSS [data-hydrate-hide="true"]
expect(signatureDisplay).toBe('none');
// digest-display may be populated by the security module on load — don't assert empty
expect(errors).toHaveLength(0);
});
});