次のコードがあります。
const inputBoxes = await landingPage.getPortIdInputBox();
await inputBoxes[0].sendKeys('0040');
await inputBoxes[1].sendKeys('9142');
const url: string = await browser.getCurrentUrl();
expect(url).toContain('/profile?fund1=0040&fund2=9142');
Protractor と Jasmine を使用して Angular 6 アプリの e2e テスト ケースを作成しています。すべてのテストは正常に実行されているようですが、入力ボックスにテキストを入力した後にフローが停止することがあります。約 1 分間停止し、結果を正常に確認します。sendKeys
メソッド formを使用してユーザー入力をチェックする 2 つのメソッドがありますWebdriverJS
。最初の関数でフローが停止することもあれば、入力ボックスにテキストを入力した後に 2 番目の関数で停止することもあります。
async/awaut
メソッドによって返される約束を処理するためにも使用していWebdriverJS
ます。これにより、ビルドが CD パイプラインで失敗し、次のエラーが発生します。
エラー: タイムアウト - jasmine.DEFAULT_TIMEOUT_INTERVAL で指定されたタイムアウト内に非同期コールバックが呼び出されませんでした。
どこが間違っているのかわかりません。ローカルではすべてのテストがタイムアウト範囲内で問題なくパスしますが、CD パイプラインでは失敗します。
私の分度器.conf.jsファイルは次のとおりです。
const SpecReporter = require('jasmine-spec-reporter').SpecReporter;
const JUnitXmlReporter = require('jasmine-reporters').JUnitXmlReporter;
const ENV = require('../variables.js');
const path = require('path');
const tsNode = require('ts-node');
exports.config = {
logLevel: 'DEBUG',
SELENIUM_PROMISE_MANAGER: false,
allScriptsTimeout: 120000,
getPageTimeout: 120000,
specs: [path.join(__dirname, 'src', '**/*.e2e-spec.ts')],
directConnect: ENV.PROTRACTOR_DIRECT_CONNECT,
multiCapabilities: ENV.PROTRACTOR_MULTI_CAPABILITIES,
seleniumAddress: ENV.PROTRACTOR_SELENIUM_ADDRESS,
chromeDriver: ENV.PROTRACTOR_CHROME_DRIVER,
resultJsonOutputFile: ENV.TEST_E2E_REPORT_FILE,
baseUrl: ENV.BASE_URL,
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 120000,
print: function() {}
},
onPrepare() {
tsNode.register({ project: path.join(__dirname, './tsconfig.e2e.json') });
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
jasmine.getEnv().addReporter(
new JUnitXmlReporter({
savePath: ENV.TEST_E2E_REPORT_DIRECTORY
})
);
}
};