Data cleanup approaches in Cypress - Build an Automation Script
/// <reference types="cypress" /> // Custom command to login as admin Cypress.Commands.add('loginAsAdmin', () => { cy.visit('/login'); cy.get('[data-cy=email-input]').type('admin'); cy.get('[data-cy=password-input]').type('AdminPass!'); cy.get('[data-cy=login-button]').click(); cy.url().should('include', '/dashboard'); }); describe('Data cleanup: Delete test user', () => { before(() => { cy.loginAsAdmin(); }); it('Deletes user testuser123 from user management', () => { cy.visit('/user-management'); // Wait for search input and type username cy.get('[data-cy=user-search-input]').should('be.visible').type('testuser123'); // Click search button cy.get('[data-cy=user-search-button]').click(); // Wait for user row to appear cy.get('[data-cy=user-row-testuser123]').should('be.visible'); // Click delete button for the user cy.get('[data-cy=delete-user-testuser123]').click(); // Confirm deletion dialog appears cy.get('[data-cy=confirm-delete-dialog]').should('be.visible'); // Click confirm delete button cy.get('[data-cy=confirm-delete-button]').click(); // Verify user no longer appears in the list cy.get('[data-cy=user-row-testuser123]').should('not.exist'); }); });
The code starts by adding a custom Cypress command loginAsAdmin to reuse the login steps easily. This helps keep the test clean and avoids repeating login code.
In the test suite, the before hook logs in as admin once before running the test. This ensures the test starts with the right user context.
The test visits the user management page, waits for the search input to be visible, and types the username testuser123. It clicks the search button and waits for the user row to appear.
Then it clicks the delete button for that user, waits for the confirmation dialog, and confirms the deletion. Finally, it asserts that the user row no longer exists, confirming the user was deleted.
Selectors use data-cy attributes for stability and clarity. Explicit waits with should('be.visible') ensure elements are ready before interacting, avoiding flaky tests.
This approach follows best practices by using custom commands, explicit waits, and stable selectors to automate data cleanup reliably.
Now add data-driven testing to delete three different test users: 'testuser123', 'testuser456', and 'testuser789'.