@nestjsvn/swagger-sse
Version:
OpenAPI documentation and interactive Swagger UI for NestJS Server-Sent Events endpoints
66 lines (65 loc) • 3.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const setup_1 = require("./setup");
const test_controllers_1 = require("./test-controllers");
describe('DOM Structure Diagnostic E2E Test', () => {
let context;
beforeAll(async () => {
context = await setup_1.E2ETestSetup.createContext('dom-structure-diagnostic', {
controllers: [test_controllers_1.TestEventsController, test_controllers_1.MobileTestController],
});
});
afterAll(async () => {
await setup_1.E2ETestSetup.cleanup('dom-structure-diagnostic');
});
it('should examine DOM structure of endpoints', async () => {
console.log('=== DOM STRUCTURE DIAGNOSTIC START ===');
// Navigate to Swagger UI
await context.page.goto(`${context.baseUrl}/api-docs`);
await context.page.waitForSelector('.swagger-ui', { timeout: 10000 });
console.log('1. Swagger UI loaded');
// Get the HTML structure of the basic endpoint
const basicEndpointHTML = await context.page.$eval('[data-path="/test-events/basic"]', el => el.outerHTML);
console.log('2. Basic endpoint HTML structure:');
console.log(basicEndpointHTML);
// Check what classes are available on the basic endpoint
const basicEndpointClasses = await context.page.$eval('[data-path="/test-events/basic"]', el => el.className);
console.log('3. Basic endpoint classes:', basicEndpointClasses);
// Check for all possible clickable elements within the basic endpoint
const clickableElements = await context.page.$$eval('[data-path="/test-events/basic"] *', elements => elements.map(el => ({
tagName: el.tagName,
className: el.className,
textContent: el.textContent?.trim().substring(0, 50),
clickable: el.onclick !== null || el.style.cursor === 'pointer'
})).filter(el => el.textContent && el.textContent.length > 0));
console.log('4. Clickable elements within basic endpoint:');
console.log(JSON.stringify(clickableElements, null, 2));
// Check if there are any .opblock-summary elements anywhere
const allOpblockSummaries = await context.page.$$eval('.opblock-summary', elements => elements.map(el => ({
textContent: el.textContent?.trim(),
parentDataPath: el.closest('[data-path]')?.getAttribute('data-path')
})));
console.log('5. All .opblock-summary elements:');
console.log(JSON.stringify(allOpblockSummaries, null, 2));
// Try different selector patterns
const selectorTests = [
'[data-path="/test-events/basic"] .opblock-summary',
'[data-path="/test-events/basic"] button',
'[data-path="/test-events/basic"] .opblock-summary-path',
'[data-path="/test-events/basic"] .opblock-summary-description',
'[data-path="/test-events/basic"]',
'.opblock[data-path="/test-events/basic"] .opblock-summary'
];
for (const selector of selectorTests) {
const element = await context.page.$(selector);
console.log(`6. Selector "${selector}" found:`, !!element);
if (element) {
const isVisible = await element.isVisible();
const boundingBox = await element.boundingBox();
console.log(` - Visible: ${isVisible}, BoundingBox:`, boundingBox);
}
}
console.log('=== DOM STRUCTURE DIAGNOSTIC END ===');
expect(true).toBe(true);
}, 60000);
});