Files
Charon/tests/debug-dns-button.spec.ts
akanealw eec8c28fb3
Some checks are pending
Go Benchmark / Performance Regression Check (push) Waiting to run
Cerberus Integration / Cerberus Security Stack Integration (push) Waiting to run
Upload Coverage to Codecov / Backend Codecov Upload (push) Waiting to run
Upload Coverage to Codecov / Frontend Codecov Upload (push) Waiting to run
CodeQL - Analyze / CodeQL analysis (go) (push) Waiting to run
CodeQL - Analyze / CodeQL analysis (javascript-typescript) (push) Waiting to run
CrowdSec Integration / CrowdSec Bouncer Integration (push) Waiting to run
Docker Build, Publish & Test / build-and-push (push) Waiting to run
Docker Build, Publish & Test / Security Scan PR Image (push) Blocked by required conditions
Quality Checks / Auth Route Protection Contract (push) Waiting to run
Quality Checks / Codecov Trigger/Comment Parity Guard (push) Waiting to run
Quality Checks / Backend (Go) (push) Waiting to run
Quality Checks / Frontend (React) (push) Waiting to run
Rate Limit integration / Rate Limiting Integration (push) Waiting to run
Security Scan (PR) / Trivy Binary Scan (push) Waiting to run
Supply Chain Verification (PR) / Verify Supply Chain (push) Waiting to run
WAF integration / Coraza WAF Integration (push) Waiting to run
changed perms
2026-04-22 18:19:14 +00:00

122 lines
4.7 KiB
TypeScript
Executable File

import { test } from './fixtures/test';
import { waitForLoadingComplete } from './utils/wait-helpers';
test('DEBUG: DNS Providers page state', async ({ page, baseURL, context }) => {
console.log(`\n🔍 TEST CONTEXT INFO:`);
console.log(` Base URL: ${baseURL}`);
console.log(` Page URL before goto: ${page.url()}`);
// Check cookies before navigation
const cookiesBefore = await context.cookies();
console.log(` Cookies before navigation: ${cookiesBefore.length} total`);
cookiesBefore.forEach(c => {
console.log(` - ${c.name}: domain="${c.domain}", httpOnly=${c.httpOnly}`);
});
// Monitor API requests
const apiCalls: { url: string; status: number; method: string }[] = [];
page.on('response', async (response) => {
if (response.url().includes('/api/')) {
apiCalls.push({
url: response.url(),
status: response.status(),
method: response.request().method(),
});
console.log(` API: ${response.request().method()} ${response.url()}${response.status()}`);
// If it's an auth check, show response body
if (response.url().includes('/auth/') || response.url().includes('/users/me')) {
try {
const body = await response.text();
console.log(` Response: ${body.substring(0, 200)}`);
} catch (e) {
console.log(` (Could not read response body)`);
}
}
}
});
await page.goto('/dns/providers');
console.log(` Page URL after goto: ${page.url()}`);
// Wait for API calls to complete
await page.waitForLoadState('networkidle');
console.log(`\n 📊 API Calls Summary: ${apiCalls.length} total`);
// Check cookies after navigation
const cookiesAfter = await context.cookies();
console.log(` Cookies after navigation: ${cookiesAfter.length} total`);
cookiesAfter.forEach(c => {
console.log(` - ${c.name}: domain="${c.domain}", value="${c.value.substring(0, 20)}..."`);
});
await waitForLoadingComplete(page);
console.log('--- PAGE STATE AFTER INITIAL LOAD ---');
// Log all buttons
const buttons = await page.getByRole('button').all();
console.log(`\nFound ${buttons.length} buttons:`);
for (const btn of buttons) {
const text = await btn.textContent();
const visible = await btn.isVisible();
const ariaLabel = await btn.getAttribute('aria-label');
console.log(`- "${text}" (visible: ${visible}, aria-label: "${ariaLabel}")`);
}
// Log page content around "provider" text
console.log('\n--- SEARCHING FOR PROVIDER-RELATED TEXT ---');
const providerText = await page.getByText(/provider/i).all();
console.log(`Found ${providerText.length} elements with "provider" text:`);
for (let i = 0; i < Math.min(providerText.length, 10); i++) {
const text = await providerText[i].textContent();
const visible = await providerText[i].isVisible();
const tagName = await providerText[i].evaluate(el => el.tagName);
console.log(` ${i+1}. <${tagName}> "${text?.substring(0, 50)}" (visible: ${visible})`);
}
// Log Outlet rendering
console.log('\n--- CHECKING NESTED ROUTING ---');
const outlet = page.locator('[data-outlet], .bg-surface-elevated.border.border-border.rounded-lg.p-6');
const outletVisible = await outlet.isVisible();
console.log(`Outlet container visible: ${outletVisible}`);
if (outletVisible) {
const outletContent = await outlet.textContent();
console.log(`Outlet content preview: ${outletContent?.substring(0, 200)}`);
}
// Wait a bit longer and check again
console.log('\n--- AFTER 2 SECOND WAIT ---');
await page.waitForTimeout(2000);
const buttonsAfterWait = await page.getByRole('button').all();
console.log(`\nButtons after wait: ${buttonsAfterWait.length}`);
for (const btn of buttonsAfterWait) {
const text = await btn.textContent();
const visible = await btn.isVisible();
console.log(`- "${text}" (visible: ${visible})`);
}
// Check for specific button patterns
console.log('\n--- SPECIFIC LOCATORS ---');
const addProviderByText = page.getByRole('button', { name: /add.*provider/i });
console.log(`getByRole('button', {name: /add.*provider/i}): ${await addProviderByText.count()} found`);
const addProviderFirst = addProviderByText.first();
const addProviderVisible = await addProviderFirst.isVisible().catch(() => false);
console.log(`First button visible: ${addProviderVisible}`);
if (addProviderVisible) {
const text = await addProviderFirst.textContent();
console.log(`First button text: "${text}"`);
}
// Log HTML snippet
console.log('\n--- PAGE HTML SNIPPET ---');
const mainContent = page.locator('main, [role="main"], .space-y-6').first();
const html = await mainContent.innerHTML().catch(() => 'Could not get HTML');
console.log(html.substring(0, 1000));
});