describe('Monaco Editor with Validation Pane', () => { beforeEach(() => { cy.visitBlankPage(); cy.prepareAsyncAPI(); cy.prepareOasGenerator(); cy.waitForSplashScreen(); // move down to line 2, column 3 const moveToPosition = `{downArrow}{rightArrow}{rightArrow}`; // introduce a typo error cy.get('.monaco-editor textarea:first', { timeout: 10000 }) .should('be.visible') .click({ force: true }) .focused() .type(`${moveToPosition}Q`); cy.waitForContentPropagation(); }); /** * note: future UX may make the table header always visible, * or existing but collapsed * expect table body
to always not exist if there are no errors * make appropriate changes if/when needed */ it('should display visible Validation Pane table header and table body when error exists', () => { cy.get('.swagger-editor__validation-table') .should('exist') .get('.swagger-editor__validation-table > thead') .should('be.visible') .get('.swagger-editor__validation-table > tbody') .should('be.visible'); // some additional assertions just to make sure cy.get('.swagger-editor__validation-table > thead > tr > :nth-child(1)') .contains('line', { matchCase: false }) .should('be.visible'); cy.get('.swagger-editor__validation-table > thead > tr > :nth-child(2)') .contains('description', { matchCase: false }) .should('be.visible'); // reflects line number from moveToPosition for validation error cy.get('.swagger-editor__validation-table > tbody > :nth-child(1) > :nth-child(1) > div') .contains('2') .should('be.visible'); // validation error message is parser specific cy.get('.swagger-editor__validation-table > tbody > :nth-child(1) > :nth-child(2) > div') .contains('should NOT have') .should('be.visible'); }); it('should not display Validation Pane after error is cleared', () => { // fix the typo error cy.get('.monaco-editor textarea:first', { timeout: 10000 }) .should('be.visible') .click({ force: true }) .focused() .type(`{backspace}`); // re-assert cy.get('.swagger-editor__validation-table > thead').should('not.exist'); cy.get('.swagger-editor__validation-table > tbody').should('not.exist'); }); });