66 lines
3.5 KiB
JavaScript
66 lines
3.5 KiB
JavaScript
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);
|
||
});
|
||
});
|