Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/thatdeveloperguy-website / tools/tdg-cybersecurity-chair-layer-qa.mjs |
| Date | Not specified in source |
| Repository | Janady13/thatdeveloperguy-website |
| Revision | 2bea2ebdff0e34494bff597d4fa9c8422a0c3a94 |
| Branch | main |
| Path or archive member | tools/tdg-cybersecurity-chair-layer-qa.mjs |
| Original SHA-256 | ab87aee31b44ebcf33fb823dbe6cd38057bfddb410cf9d7976037684bb5d2dc0 |
| Git blob SHA | 40680dc715a0edff5d3b48e05e7e9eca90734c77 |
| Reading-copy SHA-256 | ab87aee31b44ebcf33fb823dbe6cd38057bfddb410cf9d7976037684bb5d2dc0 |
Recovered source transcript
Download complete source text ↓39 lines · 2.0 KB
import { chromium } from '@playwright/test';
import { mkdirSync, writeFileSync } from 'node:fs';
import { resolve } from 'node:path';
const base = process.env.TDG_QA_BASE ?? 'https://tdg.thatwebhostingguy.com';
const route = `${base}/capabilities/cybersecurity?v=${Date.now()}`;
const evidence = resolve('evidence/rive/cybersecurity/browser');
mkdirSync(evidence, { recursive: true });
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
await page.goto(route, { waitUntil: 'networkidle' });
await page.waitForSelector('.scene-cybersecurity[data-vector="ready"]', { timeout: 20000 });
const passes = await page.locator('.cybersecurity-vector-pass').evaluateAll(elements =>
elements.map(element => element.getAttribute('data-pass')),
);
const plane = await page.locator('.scene-cybersecurity .scene-plane').boundingBox();
if (!plane) throw new Error('Cybersecurity scene plane has no bounding box.');
await page.mouse.move(plane.x + 511 / 1648 * plane.width, plane.y + 531 / 928 * plane.height);
await page.waitForTimeout(600);
await page.screenshot({ path: resolve(evidence, 'chair-layer-regression.png'), fullPage: true });
const finding = await page.evaluate(() => ({
focus: document.querySelector('.scene-cybersecurity')?.getAttribute('data-object-focus'),
chairTransform: getComputedStyle(document.querySelector('#console_chair_1')).transform,
vectorPasses: document.querySelectorAll('.cybersecurity-vector-pass').length,
}));
await browser.close();
const assertions = {
singleAuthoritativeScene: JSON.stringify(passes) === JSON.stringify(['scene']),
chairInteractionStillActive: finding.focus === 'console_chair_1' && finding.chairTransform !== 'none',
};
const report = { route, passes, finding, assertions, passed: Object.values(assertions).every(Boolean) };
writeFileSync(resolve(evidence, 'chair-layer-qa.json'), `${JSON.stringify(report, null, 2)}\n`);
console.log(JSON.stringify(report, null, 2));
if (!report.passed) process.exitCode = 1;