E2E (End-to-End) тестирование направлено на проверку работы приложения целиком — от пользовательского интерфейса до взаимодействия с серверной частью и базой данных. Для приложений на JavaScript с использованием библиотеки Element Plus ключевыми аспектами являются тестирование компонентов, взаимодействующих с DOM, и корректного отображения UI элементов, предоставляемых библиотекой.
Для E2E тестирования чаще всего применяются инструменты вроде Cypress или Playwright. Основные шаги:
npm install cypress --save-dev
или
npm install @playwright/test --save-dev
npx cypress open
или
npx playwright test --init
/cypress
/e2e
login.spec.js
form.spec.js
Библиотека Element Plus предоставляет мощный набор компонентов для
форм (<el-form>, <el-form-item>),
включая встроенные правила валидации. В E2E тестах проверяется:
Пример Cypress теста для формы с полем email и кнопкой отправки:
describe('Форма логина', () => {
it('показывает ошибку при некорректном email', () => {
cy.visit('/login')
cy.get('input[type="email"]').type('invalid-email')
cy.get('button[type="submit"]').click()
cy.contains('Введите корректный email').should('be.visible')
})
})
Компоненты <el-dialog> часто используются для
подтверждений действий или отображения дополнительной информации. E2E
тест должен убедиться в:
Пример теста Playwright:
test('Диалог подтверждения работает корректно', async ({ page }) => {
await page.goto('/users')
await page.click('button#delete-user')
await page.waitForSelector('.el-dialog__wrapper', { state: 'visible' })
await page.click('.el-dialog__footer button.confirm')
await expect(page.locator('text=Пользователь удалён')).toBeVisible()
})
Компонент <el-table> с пагинацией требует
проверки:
Пример Cypress:
cy.get('.el-table').should('exist')
cy.get('.el-table th').contains('Имя').click()
cy.get('.el-pagination .number').eq(1).click()
cy.get('.el-table tr').should('have.length.greaterThan', 0)
Элементы <el-select> и
<el-option> требуют проверки открывания списка,
выбора элементов и правильного отображения выбранного значения:
cy.get('.el-select').click()
cy.get('.el-select-dropdown .el-select-option').contains('Опция 1').click()
cy.get('.el-select .el-input').should('have.value', 'Опция 1')
Для элементов, которые загружаются асинхронно (например, через API), важно:
cy.wait(),
page.waitForSelector()).cy.intercept('GET', '/api/users', { fixture: 'users.json' }).as('getUsers')
cy.visit('/users')
cy.wait('@getUsers')
cy.get('.el-table tr').should('have.length', 3)
E2E тесты должны запускаться автоматически при сборке проекта:
package.json:"scripts": {
"test:e2e": "cypress run"
}
Тест кнопки загрузки данных
cy.get('button#load').click()
cy.get('.el-loading-spinner').should('exist')
cy.get('.data-item').should('have.length', 10)
Тест вкладок
cy.get('.el-tabs__header .el-tab-pane').eq(1).click()
cy.get('.el-tab-pane__content').should('contain.text', 'Содержимое второй вкладки')
Тест уведомлений
cy.get('button#notify').click()
cy.get('.el-notification').should('contain.text', 'Операция выполнена')
E2E тестирование приложений с Element Plus позволяет гарантировать стабильность интерфейса, корректность работы интерактивных компонентов и адекватное поведение пользователя при реальном взаимодействии с приложением. Комплексная проверка через Cypress или Playwright обеспечивает уверенность в том, что обновления библиотеки или собственный код не нарушат функциональность интерфейса.