Add browser deploy recon backend with port scan, web crawl, and deploy lane recommendations.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
POST /api/v1/recon/scan probes fleet ports from the server host, crawls owned HTTP targets, maps findings to spread lanes, and records optional oath ledger rows.
This commit is contained in:
@@ -78,15 +78,22 @@ export async function expectOnlineCrucibleCard(page: Page, hostname: string): Pr
|
||||
|
||||
export async function loginToDashboard(page: Page): Promise<void> {
|
||||
const commandDeck = page.getByRole('heading', { name: 'Command Deck' });
|
||||
const loginHeading = page.getByRole('heading', { name: 'AetherForge' });
|
||||
|
||||
for (let attempt = 0; attempt < 3; attempt++) {
|
||||
await page.goto('/', { waitUntil: 'domcontentloaded', timeout: 30_000 });
|
||||
await page.goto('/', { waitUntil: 'load', timeout: 30_000 });
|
||||
|
||||
if (await page.getByText('No frontend configured').isVisible().catch(() => false)) {
|
||||
throw new Error(
|
||||
'Dashboard SPA missing — run `npm run build` in server/web (webroot must exist before phase 8)',
|
||||
);
|
||||
}
|
||||
|
||||
await page.locator('#root').waitFor({ state: 'attached', timeout: 15_000 }).catch(() => {});
|
||||
|
||||
if (await commandDeck.isVisible().catch(() => false)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const loginHeading = page.getByRole('heading', { name: 'AetherForge' });
|
||||
try {
|
||||
await expect(loginHeading).toBeVisible({ timeout: 25_000 });
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user