typescript - Testcafe a overovanie Microsoftu zlyháva pri presmerovaní počas autentifikačného procesu
Takže píšem testovací skript pre Testcafe pre našu webovú aplikáciu a zároveň sa oboznamujem s TypeScriptom. To, čo robím, je v podstate mať LoginPage.ts, LandingPage.ts (nie relevantné pre tento problém) a LandingPageTests.ts (ktorý obsahuje samotné testy).
Aplikácia má autentifikačný tok, ktorý používa prihlásenie cez Microsoft. Skript teda klikne na tlačidlo prihlásenia Microsoft v tejto aplikácii, vyplní formuláre mojím e-mailom, potom zadá heslo na stránke organizácie, klikne na Áno pri otázke zostať prihlásený na stránke prihlásenia Microsoft a potom by sa mal uskutočniť presmerovanie zo stránky https://login.microsoftonline.com/kmsi?sso_reload=true, ale cieľ presmerovania toto odmieta s chybovým kódom 500 (zobrazené vo vývojárskych nástrojoch).
Pýtal som sa na to vývojára a povedal, že prístupový token už bol v toku vymenený, čo je zvláštne. Nemôže mi ďalej pomôcť.
Včera a dnes som veľa googlil, ale témy o tom boli buď uzavreté, alebo nevyhovovali môjmu prístupu.
Môže mi niekto poradiť, ako zmeniť skript, aby sa presmerovanie uskutočnilo? Nie som odborník na TestCafe ani TypeScript. Nižšie sú relevantné súbory, citlivé údaje sú odstránené. Neviem, čo, ak vôbec niečo, robím zle, možno som si vybral zlú kariéru. :(
PrihlasovaciaStránka.ts:
import { Selector, t } from 'testcafe';
export default class LoginPage {
private microsoftButton = Selector('span').withText('MICROSOFT');
private emailField = Selector('#i0116');
private nextBtn = Selector('#idSIButton9');
private passwordField = Selector('#passwordInput');
private signInBtn = Selector('#submitButton');
private staySignedIn = Selector('#idSIButton9');
async login (username : string, password : string){
await t
.setTestSpeed(1)
.click(this.microsoftButton)
.maximizeWindow()
.typeText(this.emailField, username, {paste : true})
.click(this.nextBtn)
.typeText(this.passwordField, password)
.click(this.signInBtn)
.click(this.staySignedIn)
};
};
LoadingPageTests.ts:
import LoginPage from './pages/LoginPage';
import LandingPage from './pages/LandingPage';
const loginPage = new LoginPage();
const landingPage = new LandingPage();
const username = 'removed';
const password = 'removed';
fixture`removed Landing page`
.page`removed`
.beforeEach(async (t) => {
await loginPage.login(username, password)
})
.afterEach(async (t) => {
await landingPage.logout()
});
test(not really relevant as the login part fails)
Odpoveď č. 1
Spusti skript takto a bude to fungovať: node --max-http-header-size=1024000 ./node_modules/testcafe/bin/testcafe.js chrome <váš skript