mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 10:33:59 -05:00
Address Copilot feedback by replacing `any` types with proper TypeScript types in Cypress test files. ## Changes **cypress/support/utils.ts:** - `win: any` → `win: Cypress.AUTWindow` - `$element: any` → `$element: JQuery<HTMLTextAreaElement>` - `$body: any` → `$body: JQuery<HTMLElement>` **cypress/e2e/claude-explain.cy.ts:** - `req: any` → `req: Cypress.Interception` (3 instances) - `url: any` → `url: string` ## Benefits - Improves type safety and catches potential runtime errors at compile time - Follows TypeScript best practices - Addresses all Copilot suggestions for better code quality - No functional changes, purely type improvements All TypeScript checks pass and no functionality is affected. Co-authored-by: Claude <noreply@anthropic.com>
66 lines
2.3 KiB
TypeScript
66 lines
2.3 KiB
TypeScript
import '../../static/global';
|
|
|
|
export function stubConsoleOutput(win: Cypress.AUTWindow) {
|
|
cy.stub(win.console, 'log').as('consoleLog');
|
|
cy.stub(win.console, 'warn').as('consoleWarn');
|
|
cy.stub(win.console, 'error').as('consoleError');
|
|
}
|
|
|
|
export function assertNoConsoleOutput() {
|
|
cy.get('@consoleLog').should('not.be.called');
|
|
cy.get('@consoleWarn').should('not.be.called');
|
|
cy.get('@consoleError').should('not.be.called');
|
|
}
|
|
|
|
/**
|
|
* Clear all network intercepts to prevent accumulation
|
|
*/
|
|
export function clearAllIntercepts() {
|
|
// Clear any existing intercepts by visiting a clean page and resetting
|
|
cy.window().then((win: Cypress.AUTWindow) => {
|
|
// Reset any cached state
|
|
win.compilerExplorerOptions = {};
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Sets content in Monaco editor using a synthetic paste event
|
|
* @param content - The code content to set
|
|
* @param editorIndex - Which editor to target (default: 0 for first editor)
|
|
*/
|
|
export function setMonacoEditorContent(content: string, editorIndex = 0) {
|
|
// Wait for Monaco editor to be visible in DOM
|
|
cy.get('.monaco-editor').should('be.visible');
|
|
|
|
// Select all and delete existing content
|
|
cy.get('.monaco-editor textarea').eq(editorIndex).focus().type('{ctrl}a{del}', {force: true});
|
|
|
|
// Trigger a paste event with our content
|
|
cy.get('.monaco-editor textarea')
|
|
.eq(editorIndex)
|
|
.then(($element: JQuery<HTMLTextAreaElement>) => {
|
|
const el = $element[0];
|
|
|
|
// Create and dispatch a paste event with our data
|
|
const pasteEvent = new ClipboardEvent('paste', {
|
|
bubbles: true,
|
|
cancelable: true,
|
|
clipboardData: new DataTransfer(),
|
|
});
|
|
|
|
// Add our text to the clipboard data
|
|
pasteEvent.clipboardData?.setData('text/plain', content);
|
|
|
|
// Dispatch the event
|
|
el.dispatchEvent(pasteEvent);
|
|
});
|
|
|
|
// Wait for compilation to complete after content change (if compiler exists)
|
|
cy.get('body').then(($body: JQuery<HTMLElement>) => {
|
|
if ($body.find('.compiler-wrapper').length > 0) {
|
|
cy.get('.compiler-wrapper').should('not.have.class', 'compiling');
|
|
}
|
|
// If no compiler wrapper exists yet, that's fine - compilation will happen when compiler is added
|
|
});
|
|
}
|