go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/analysis/frontend/ui/cypress/integration/rule_section.spec.ts (about)

     1  // Copyright 2022 The LUCI Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  import { setupTestRule } from './test_data';
    15  
    16  describe('Rule Section', () => {
    17    beforeEach(() => {
    18      // Login.
    19      cy.visit('/').contains('Log in').click();
    20      cy.contains('LOGIN').click();
    21  
    22      setupTestRule();
    23  
    24      cy.visit('/p/chromium/rules/ea5305bc5069b449ee43ee64d26d667f');
    25    });
    26  
    27    it('loads rule', () => {
    28      cy.get('[data-testid=bug-summary]').contains('LUCI Analysis Cypress Test Bug');
    29      cy.get('[data-testid=bug-status]').contains('Verified');
    30      cy.get('[data-testid=rule-definition]').contains('test = "cypress test 1"');
    31      cy.get('[data-testid=rule-archived]').contains('No');
    32      cy.get('[data-testid=update-bug-toggle]').get('[type=checkbox]').should('be.checked');
    33    });
    34  
    35    it('edit rule definition', () => {
    36      cy.get('[data-testid=rule-definition-edit]').click();
    37      cy.get('[data-testid=rule-input]').type('{selectall}test = "cypress test 2"');
    38      cy.get('[data-testid=rule-edit-dialog-save]').click();
    39      cy.get('[data-testid=rule-definition]').contains('test = "cypress test 2"');
    40      cy.get('[data-testid=reclustering-progress-description]').contains('LUCI Analysis is re-clustering test results');
    41    });
    42  
    43    it('validation error while editing rule definition', () => {
    44      cy.get('[data-testid=rule-definition-edit]').click();
    45      cy.get('[data-testid=rule-input]').type('{selectall}test = "cypress test 2"a');
    46      cy.get('[data-testid=rule-edit-dialog-save]').click();
    47      cy.get('[data-testid=snackbar]').contains('rule definition is not valid: syntax error: 1:24: unexpected token "a"');
    48      cy.get('[data-testid=rule-edit-dialog-cancel]').click();
    49      cy.get('[data-testid=rule-definition]').contains('test = "cypress test 1"');
    50    });
    51  
    52    it('edit bug', () => {
    53      cy.get('[data-testid=bug-edit]').click();
    54      cy.get('[data-testid=bug-number').type('{selectall}920869');
    55      cy.get('[data-testid=bug-edit-dialog-save]').click();
    56      cy.get('[data-testid=bug]').contains('crbug.com/920869');
    57      cy.get('[data-testid=bug-summary]').contains('LUCI Analysis Cypress Alternate Test Bug');
    58      cy.get('[data-testid=bug-status]').contains('Fixed');
    59    });
    60  
    61    it('validation error while editing bug', () => {
    62      cy.get('[data-testid=bug-edit]').click();
    63      cy.get('[data-testid=bug-number').type('{selectall}125a');
    64      cy.get('[data-testid=bug-edit-dialog-save]').click();
    65      cy.get('[data-testid=snackbar]').contains('not a valid monorail bug ID');
    66      cy.get('[data-testid=bug-edit-dialog-cancel]').click();
    67      cy.get('[data-testid=bug]').contains('crbug.com/920867');
    68    });
    69  
    70    it('archive and restore', () => {
    71      cy.get('[data-testid=rule-archived-toggle]').contains('Archive').click();
    72      cy.get('[data-testid=confirm-dialog-cancel]').click();
    73      cy.get('[data-testid=rule-archived]').contains('No');
    74  
    75      cy.get('[data-testid=rule-archived-toggle]').contains('Archive').click();
    76      cy.get('[data-testid=confirm-dialog-confirm]').click();
    77      cy.get('[data-testid=rule-archived]').contains('Yes');
    78  
    79      cy.get('[data-testid=rule-archived-toggle]').contains('Restore').click();
    80      cy.get('[data-testid=confirm-dialog-confirm]').click();
    81      cy.get('[data-testid=rule-archived]').contains('No');
    82    });
    83  
    84    it('toggle bug updates', () => {
    85      cy.get('[data-testid=update-bug-toggle]').click();
    86      // Cypress assertion should('not.be.checked') does not work for MUI Switch.
    87      cy.get('[data-testid=update-bug-toggle]').should('not.have.class', 'Mui-checked');
    88  
    89      cy.get('[data-testid=update-bug-toggle]').click();
    90      cy.get('[data-testid=update-bug-toggle]').should('have.class', 'Mui-checked');
    91    });
    92  });