#javascript #function #automation #cypress
Вопрос:
Как я могу лучше организовать свой код cypress для тестирования, чтобы мне нужно было импортировать только некоторые функции?
Я хочу начать с создания файла для аутентификации на странице, а затем я хочу импортировать его в тест с несколькими функциями.
Я попробовал следующий код экспорта, и он, похоже, был неверным, с ошибками:
export function login() {
cy.visit('https://*********')
cy.get('input[name="Parameter.UserName"]').type('*****')
cy.get('input[name="Parameter.Password"]').type('*****')
cy.contains('Login').click()
}
export default {login};
И в тесте :
import {login} from 'elements/pages/login.js'
Ответ №1:
Cypress предоставляет для этой цели нечто, называемое пользовательскими командами, вы можете прочитать об этом здесь.
Перейдите cypress/support/commands.js
и напишите весь свой код здесь, как:
Cypress.Commands.add('login', () => {
cy.visit('https://*********')
cy.get('input[name="Parameter.UserName"]').type('*****')
cy.get('input[name="Parameter.Password"]').type('*****')
cy.contains('Login').click()
})
А затем в любом из ваших тестов вы можете напрямую добавить:
cy.login()
Комментарии:
1. Отлично , спасибо вам! Есть ли какой-нибудь способ не вводить все команды в commands.js и как-то организовать их на страницах (например, страница Календаря с некоторыми командами, страница настроек с другими командами, страница бронирования с другими командами)?
2. Да, способ есть. Вы можете создавать отдельные файлы js в любом месте проекта, а затем добавлять путь к файлу
cypress/support/index.js
, например. Предположим, у меня есть файлlogin.js
вintegration/utils
папке, все, что мне нужно сделать, это добавитьimport '../integration/utils/login.js'
cypress/support/index.js
файл, и он будет работать.3. Если у меня есть «Кипарис. Команды.добавить(‘войти’, () => { })», могу ли я выполнить несколько шагов в этом тесте? я имею в виду несколько шагов с описанием каждого
Ответ №2:
Для импорта требуется относительный URL-адрес
import {login} from '../elements/pages/login.js' // relative from cypress/integration
или если под cypress/suport/elements
import {login} from '../support/elements/pages/login.js'
Абсолютный импорт (где путь не имеет ведущего ./ или ../) предполагается, что это библиотечные пакеты node_modules
.