testcafe - CAS аутентификация - PullRequest
1 голос
/ 16 января 2020

Новое в 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);
});

1 Ответ

2 голосов
/ 20 января 2020

Функциональность TestCafe 'User Roles' должна соответствовать вашим требованиям. Пожалуйста, обратитесь к следующим topi c в документации TestCafe для деталей: https://devexpress.github.io/testcafe/documentation/test-api/authentication/user-roles.html

...