Есть ли способ позволить testcafe войти с помощью sso? - PullRequest
3 голосов
/ 23 октября 2019

Для сквозного теста я хочу, чтобы Testcafe подключился к нашему SaaS-приложению с помощью единого входа (как сделал бы пользователь). Чтобы это работало, Testcafe должен пройти через наш прокси-сервер, а затем войти в приложение, используя учетные данные пользователя, который в данный момент вошел в систему.

Всякий раз, когда я делаю это с помощью собственного браузера, это работает просто отлично, нокаким-то образом Testcafe застревает, пытаясь зайти на страницу.

Я пытался заставить это работать, используя параметры авторизации, которые предоставляет Testcafe, однако ни один из них, похоже, не работает.

import { Selector, ClientFunction } from 'testcafe';

const getLocation = ClientFunction(() => document.location.href);

fixture("Close ADFS")
    .httpAuth({
      username: 'username',
      password: 'password'
    });

test('My first test', async t => {
  await t
    .navigateTo("url of web application")
    .expect(getLocation()).contains("url of web application")
    .expect(Selector("css selector that is in the application").exists).ok("Application not reached")
});

Всякий раз, когда я запускаю тест, я получаю следующую ошибку:

× My first test

1) AssertionError: expected 'about:error' to include 'url of web application'

Browser: Chrome 77.0.3865 / Windows 10.0.0

   9 |    });
  10 |
  11 |test('My first test', async t => {
  12 |  await t
  13 |    .navigateTo("url of web application")
> 14 |    .expect(getLocation()).contains("url of web application")
  15 |    .expect(Selector("css selector that is in the application").exists).ok("Application not reached")
  16 |});

at contains (C:\Users\M63G736\Projects\testcafe-adfs\test.js:14:28)
at <anonymous> (C:\Users\M63G736\Projects\testcafe-adfs\test.js:11:1)
at <anonymous> (C:\Users\M63G736\Projects\testcafe-adfs\node_modules\testcafe\src\api\wrap-test-function.js:17:28)
at TestRun._executeTestFn (C:\Users\M63G736\Projects\testcafe-adfs\node_modules\testcafe\src\test-run\index.js:289:19)
at TestRun.start (C:\Users\M63G736\Projects\testcafe-adfs\node_modules\testcafe\src\test-run\index.js:338:24)


2) A request to "url of web application" has failed.
Use quarantine mode to perform additional attempts to execute this test.
You can find troubleshooting information for this issue at "https://go.devexpress.com/TestCafe_FAQ_ARequestHasFailed.aspx".

Error details:
Failed to find a DNS-record for the resource at "url of web application".

Browser: Chrome 77.0.3865 / Windows 10.0.0

Может кто-нибудь сказать, может ли это быть сделано с помощью Testcafe? И если да, можете ли вы сказать, какой конфиг / код использовать?

Редактировать: я исправил ошибку DNS с помощью другого прокси. И несколько изменил тест:

import { Selector, ClientFunction } from 'testcafe';

const getLocation = ClientFunction(() => document.location.href);

fixture("Close ADFS").page('https://google.nl');

test('My first test', async t => {
  await t
    .navigateTo("url of web application")
    .expect(Selector("element on homepage of web application").exists).ok("Close not reached")
    .expect(getLocation()).contains("url of web application")
});

По-прежнему происходит сбой при

 Close ADFS
 × My first test

   1) AssertionError: Close not reached: expected false to be truthy

      Browser: Chrome 77.0.3865 / Windows 10.0.0

          9 |  });
         10 |
         11 |test('My first test', async t => {
         12 |  await t
         13 |    .navigateTo("url of web application")
       > 14 |    .expect(Selector("body > app-component > app-shell > header > nav > div > div.navbar-header > div").exists).ok("Close not reached")
         15 |    .expect(getLocation()).contains("url of web application")
         16 |});

         at ok (C:\Users\M63G736\Projects\testcafe-adfs\test.js:14:113)
         at <anonymous> (C:\Users\M63G736\Projects\testcafe-adfs\test.js:11:1)
         at <anonymous> (C:\Users\M63G736\Projects\testcafe-adfs\node_modules\testcafe\src\api\wrap-test-function.js:17:28)
         at TestRun._executeTestFn (C:\Users\M63G736\Projects\testcafe-adfs\node_modules\testcafe\src\test-run\index.js:289:19)
         at TestRun.start (C:\Users\M63G736\Projects\testcafe-adfs\node_modules\testcafe\src\test-run\index.js:338:24)



 1/1 failed (22s)
npm ERR! Test failed.  See above for more details.

Когда я запускаю тест, я вижу, что он посещает google.nl, но затем не может перейти кURL приложения.

1 Ответ

1 голос
/ 24 октября 2019

Это означает, что браузер не может загрузить URL-адрес «URL-адреса веб-приложения». Убедитесь, что веб-приложение доступно с компьютера, на котором выполняются тесты.

...