Для сквозного теста я хочу, чтобы 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 приложения.