проблема testcafe при возврате из перенаправления Node ExpressJS - PullRequest
0 голосов
/ 08 ноября 2018

В настоящее время я тестирую интерфейсное приложение React с TestCafe. Текущая среда:

Реакция: 16.3.2 Узел: 8.10.0 TestCafe: 0,23,0 MacOS Mojave 10.14.1

Мы написали около 65 тестов, и все они работают отлично. Мы внедрили компонент единого входа в наше приложение, что создало некоторые проблемы автоматизации. Вместо того, чтобы пытаться направить TestCafe к нашему приложению И этому конкретному провайдеру единого входа, вместо этого мы используем поддельный вызов API.

Упрощенный порядок операций для приложения при обычном использовании: 1. Реагирует приложение запускается, не обнаруживает учетных данных единого входа 2. Служба защиты окружающей среды предоставляет приложению правильный URL-адрес единого входа, реагируя на то, что приложение перенаправляет пользователя на страницу входа в единый вход с помощью window.location. 3. Пользователь входит и SSO перенаправляет обратно в наше приложение с дополнительным параметром запроса URL-адреса и соответствующим значением. 4. Приложение React переходит вперед в состоянии «залогинен»

Довольно простые вещи.

Когда тестируется приложение React, мы просто предоставляем разные URL-адреса, которые указывают на локальный экземпляр ExpressJS на localhost: 3002. Когда приложение React выполняет window.location для поддельного SSO API (http://localhost:3002/fakeOAuth), экземпляр ExpressJS просто выполняет response.redirect (http://localhost:3000/?sso=fakeCode)), и теперь мы возвращаемся к нашему приложению React с дополнительным синтетическим Данные единого входа. Эта схема прекрасно работает, когда не управляется TestCafe.

Когда мы запускаем приложение React через TestCafe, TestCafe зависает при возврате из поддельного вызова единого входа в приложение React. После этого зависания мы должны принудительно уничтожить TestCafe в командной строке с помощью ctrl-c.

Используя инструменты отладки Chrome и просматривая вывод консоли, появляется сообщение:

Uncaught TypeError: __get$ is not a function
at hotCreateRequire (bundle.js:73)
at bundle.js:719
at bundle.js:722

и скриншот можно найти в конце этого поста ниже.

Тестовый код:

import { Selector } from 'testcafe'
fixture 'Landing Page Body Tests'
.page 'localhost:3000

test ('Displays correct main welcome title', async t => {
    const landingPage = Selector('.card-title') 
    await t 
        .expect((landingPage).innerText).eql('Welcome, Fakeuser', 'Incorrect Username Found')
})

Снимок экрана ошибки TestCafe

У кого-нибудь есть идеи, почему происходит сбой TestCafe? Я несколько раз переделывал тест, исследовал и экспериментировал с использованием классов RoC и ClientFunction TestCafe, но безрезультатно. Любой вклад будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 ноября 2018

Похоже, ошибка в TestCafe. Функция __get$ является внутренней функцией TestCafe, а ошибка __get$ is not a function означает, что TestCafe не смог правильно обработать вашу страницу и установить ее внутренние функции в объект глобального окна.

Я предлагаю вам создать новый отчет об ошибках в репозитории TestCafe и предоставить HAR-отчет и пример, который можно использовать для воспроизведения проблемы.

...