Новое в TestCafe. Получил несколько простых примеров тестов, работающих легко. Однако я не смог найти ни одного примера функций, которые могли бы позволить мне войти в мое приложение через страницу аутентификации CAS.
Этот код работает для поиска кнопки входа на странице входа и щелкните по нему.
fixture`VRT`
.page `http://myapp.com/login/`;
test('Find Login button', async t => {
const input = Selector('input.btn');
await t.click(input);
});
И это будет работать для ввода имени пользователя и пароля на странице входа в систему:
test('Login using CAS', async t => {
await t
.expect("#username").exists
.typeText('#username', 'myuser')
.typeText('#password', '***')
.click('#submit');
});
Но проблема в том, что, похоже, нет возможности продолжить от одного теста к другому. Поэтому я не могу go от первого теста, который открывает страницу входа в систему, до следующего теста, который вводит учетные данные. Похоже, что для TestCafe каждый тест должен указывать свою собственную страницу.
Если я попытаюсь go напрямую перейти на страницу входа в CAS, указав ее как «страницу» фикстуры, TestCafe не открывается страница, я думаю, потому что URL очень длинный.
Спасибо за любые предложения.
Обновление:
Итак, использование ролей дало мне немного больше ( спасибо) но пришлось пройти еще одну страницу CAS с кнопкой ввода, которую нужно нажать, прежде чем перейти на страницу, которую я хотел протестировать. Удалось добавить еще один клик к роли логина:
import { Role } from 'testcafe';
import { Selector } from 'testcafe';
const finalLoginBtn = Selector('input.btn');
const myUserRole = Role('http://example.com/login', async t => {
await t
.click('input.btn')
.typeText('#username', 'my-username')
.typeText('#password', '*****')
.click('#submit')
.click(finalLoginBtn);
}, { preserveUrl: true });
fixture`VRT`
test("My User Page", async t => {
await t.navigateTo(`http://example.com`)
await t.useRole(myUserRole);
});