Я только начал внедрять пользовательский интерфейс каратэ (v0.9.5). Уже реализовано API-тестирование с использованием каратэ, и оно отлично работает.
Следуя стратегии аутентификации HTTP basi c на этой странице - https://github.com/intuit/karate#http -basi c -authentication-example the Работа с basi c auth работает для API-тестов. Я устанавливаю заголовки HTTP один раз и запускаю все тесты API. Теперь для тестирования пользовательского интерфейса открываемый мной URL-адрес вызывает всплывающее окно с базовой аутентификацией c, как показано ниже:
Итак, я подумал что я мог бы использовать ту же стратегию, что я использовал для API-тестов, чтобы справиться с этим. В фоновом разделе моего файла объектов я вызываю файл объектов, который выполняет аутентификацию и устанавливает заголовки, как показано ниже:
Файл вызываемого объекта для установки заголовков (admin-headers.feature). Этот функциональный файл получает токен после того, как администратор выполнил вход через karate-config. js. Затем назначает токен вместе с base64-закодированным basei c auth заголовкам, вызывающим заголовки. js. Пользователь и пароль Base64 вводятся как аргументы maven и считываются через переменные karate-config.
(/ admin-headers.feature)
Feature: karate-config.js will perform one time login for admin and
set the session token for all subsequent requests
Background:
* def session = adminAuthInfo.authSession
* def basic_auth = call read('classpath:basic-auth.js') { username: '#(basicAuthUser)', password: '#(basicAuthPassword)' }
* configure headers = read('classpath:headers.js')
Scenario: One-time login for user and set the
session token in request header
Код js для возврата Auth и готовить ie к вышеуказанному файлу функций (/headers.js).
function() {
var session = karate.get('session');
var basic_auth = karate.get('basic_auth');
if(session){
return {
Authorization: basic_auth,
Cookie: "SESSION=" + session
};
} else {
return {};
}
}
Мой файл тестовых возможностей пользовательского интерфейса (/ui-test.feature):
Feature: Login test
Background:
# Authorise via api
* callonce read('classpath:common/headers/admin-headers.feature')
* configure driver = { type: 'chrome' }
Scenario: Test login
Given driver 'https://test.internal.mysite.com/names'
Запуск вышеуказанного файла функции по-прежнему показывает всплывающее окно аутентификации.
Затем я попытался установить файлы cookie во время инициализации драйвера (что я думаю, вероятно, не правильный путь?), Как показано ниже:
Feature: Login test
Background:
# Authorise via api
* def login = callonce read('classpath:common/headers/admin-headers.feature')
* def uiCookie = { name: 'SESSION', value: '#(login.userAuthInfo.authSession)', domain: 'test.internal.mysite.com' }
* configure driver = { type: 'chrome', cookie: '#(uiCookie)' }
Scenario: Test login
Given driver 'https://test.internal.mysite.com/names'
Выше также не работает. Что я здесь не так делаю? всплывающее окно продолжает появляться, потому что повар ie не устанавливается, когда драйвер инициализируется, а затем открывает указанный URL-адрес?
Помощь очень ценится.