Я использую транспортир для угловых испытаний автоматизации.Если вы хотите использовать async await, вы должны отключить поток управления.Итак, в моем protractor.conf.js я установил SELENIUM_PROMISE_MANAGER: false.Разве это не распознано или я что-то забыл?
describe('As registarar, I can open a new client in 1G1P', function(){
private const SSIN_UNDER_TEST = "03091011333";
beforeEach(async function(){
browser.waitForAngularEnabled(false);
const loginPage = new KeyCloak();
await browser.get('http://localhost:4200/1G1P/home');
await browser.sleep(1000);
await loginPage.clickLoginButton('AlisonColquhoun');
});
it('does not exist in eyouth', async() => {
const homePage = new HomePage();
browser.waitForAngularEnabled(true);
await browser.sleep(2000);
await homePage.openKszAccordion();
await homePage.ssinSearchUser(SSIN_UNDER_TEST);
const element = await homePage.firstKszSearchResult;
const isPresent = await element.isDisplayed();
expect(isPresent).toBeTruthy();
await homePage.selectFirstSearchResult();
});
});
Это мой тест.
И объект страницы.Я довольно новичок в концепции объектной модели страницы в машинописи.Просто к взаимодействию со страницей ничего не утверждает.Должен ли я вернуть обещания?
export class HomePage {
private _firstNameResult: ElementFinder = $('tbody tr:nth-child(1) td:nth-child(1)');
private _lastNameResult: ElementFinder = $('tbody tr:nth-child(1) td:nth-child(2)');
private _ksz_accordion = $('#' + Element.ACCORDION_KSZ_SEARCH_FORM);
private _firstKszSearchResult = $(TAG.KSZ_SEARCH_TABLE + ' button');
private searchButton = $('#' + Element.KSZ_SEARCH_BUTTON);
private _firstNameInput = $('#' + Element.FIRSTNAME_SEARCH_INPUT);
private _lastNameInput = $('#' + Element.LASTNAME_SEARCH_INPUT);
private _birthDateInput = $('#' + Element.BIRTH_DATE_SEARCH_INPUT);
private _ssinInput = $('#' + Element.SSIN_SEARCH_INPUT);
get firstKszSearchResult(): WebElementPromise {
return this._firstKszSearchResult.getWebElement();
}
public async phoneticSearchUser(firstName: string, lastName: string, birthDate: string){
await this._firstNameInput.sendKeys(firstName);
await this._lastNameInput.sendKeys(lastName);
await this._birthDateInput.sendKeys(birthDate);
this.searchButton.click();
}
public openKszAccordion(){
return this._ksz_accordion.click();
}
public async ssinSearchUser(ssin: string){
await this._ssinInput.sendKeys(ssin);
this.searchButton.click();
}
public selectFirstSearchResult(){
this._firstKszSearchResult.click();
}
}
Мой конфиг транспортира, с версией 5.3.0
const { SpecReporter } = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
SELENIUM_PROMISE_MANAGER: false,
specs: [
'./src/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
onPrepare() {
require('ts-node').register({
project: require('path').join(__dirname, './tsconfig.e2e.json')
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
browser.driver.manage().window().maximize();
},
suites: { //run with e.g. --suite=carerequest or --suite=carerequest,home
carerequest: './src/tests/carerequest/*.ts',
home: './src/tests/home/*.ts',
login: './src/tests/login/*.ts'
}
};