@nestjsvn/swagger-sse
Version:
OpenAPI documentation and interactive Swagger UI for NestJS Server-Sent Events endpoints
96 lines (95 loc) • 4.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const setup_1 = require("./setup");
const test_controllers_1 = require("./test-controllers");
describe('Endpoint Expansion Diagnostic', () => {
let context;
beforeAll(async () => {
context = await setup_1.E2ETestSetup.createContext('expansion-diagnostic', {
controllers: [test_controllers_1.TestEventsController],
});
});
afterAll(async () => {
await setup_1.E2ETestSetup.cleanup('expansion-diagnostic');
});
it('should understand how to expand endpoints', async () => {
await context.page.goto(`${context.baseUrl}/api-docs`);
await context.page.waitForSelector('.swagger-ui', { timeout: 10000 });
// Get initial state
const initialState = await context.page.evaluate(() => {
const pathElement = document.querySelector('[data-path="/test-events/basic"]');
const opblock = pathElement?.closest('.opblock');
const summary = opblock?.querySelector('.opblock-summary');
return {
hasOpblock: !!opblock,
hasSummary: !!summary,
isExpanded: opblock?.classList.contains('is-open'),
hasExecuteWrapper: !!opblock?.querySelector('.execute-wrapper'),
opblockClasses: opblock?.className,
summaryClasses: summary?.className,
clickableElements: Array.from(opblock?.querySelectorAll('*') || [])
.filter(el => el.addEventListener || el.onclick)
.map(el => ({
tagName: el.tagName,
className: el.className,
id: el.id,
})),
};
});
console.log('Initial state:', JSON.stringify(initialState, null, 2));
// Try different click strategies
console.log('Trying to click on opblock-summary...');
await context.page.click('.opblock .opblock-summary');
await context.page.waitForTimeout(1000);
const afterSummaryClick = await context.page.evaluate(() => {
const pathElement = document.querySelector('[data-path="/test-events/basic"]');
const opblock = pathElement?.closest('.opblock');
return {
isExpanded: opblock?.classList.contains('is-open'),
hasExecuteWrapper: !!opblock?.querySelector('.execute-wrapper'),
};
});
console.log('After summary click:', afterSummaryClick);
if (!afterSummaryClick.isExpanded) {
console.log('Summary click failed, trying opblock-summary-method...');
await context.page.click('.opblock .opblock-summary-method');
await context.page.waitForTimeout(1000);
const afterMethodClick = await context.page.evaluate(() => {
const pathElement = document.querySelector('[data-path="/test-events/basic"]');
const opblock = pathElement?.closest('.opblock');
return {
isExpanded: opblock?.classList.contains('is-open'),
hasExecuteWrapper: !!opblock?.querySelector('.execute-wrapper'),
};
});
console.log('After method click:', afterMethodClick);
}
if (!afterSummaryClick.isExpanded) {
console.log('Method click failed, trying opblock-summary-path...');
await context.page.click('[data-path="/test-events/basic"]');
await context.page.waitForTimeout(1000);
const afterPathClick = await context.page.evaluate(() => {
const pathElement = document.querySelector('[data-path="/test-events/basic"]');
const opblock = pathElement?.closest('.opblock');
return {
isExpanded: opblock?.classList.contains('is-open'),
hasExecuteWrapper: !!opblock?.querySelector('.execute-wrapper'),
};
});
console.log('After path click:', afterPathClick);
}
// Final state check
const finalState = await context.page.evaluate(() => {
const pathElement = document.querySelector('[data-path="/test-events/basic"]');
const opblock = pathElement?.closest('.opblock');
return {
isExpanded: opblock?.classList.contains('is-open'),
hasExecuteWrapper: !!opblock?.querySelector('.execute-wrapper'),
executeWrapperVisible: !!opblock?.querySelector('.execute-wrapper:not([style*="display: none"])'),
};
});
console.log('Final state:', finalState);
// This test always passes - it's just for diagnostics
expect(true).toBe(true);
});
});