javascript - 在量角器中 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调
问题描述
我正在使用量角器和 ECMAScript 6 来开发端到端测试。但是当测试完成时,我看到了错误:
Message:
Error: Timeout - Async callback was not invoked within the timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
我尝试了在 StackOverflow 和 GitHub 上找到的所有解决方案。例如,将 jasmineNodsOption 添加到配置文件,将参数 done 添加到测试函数,将超时添加到函数没有任何帮助。
测试.js
import { doubleClick, isDisplayed, waitToBeVisible } from '../page_objects/base_page';
import HairLossPage from '../page_objects/HairLossPage';
import CartComponent from '../page_objects/components/CartComponent';
/*global expect describe beforeAll it browser*/
describe('Hair-loss. Question pages', () => {
const heirLoss = new HairLossPage();
const cartComponent = new CartComponent();
beforeAll(() => {
browser.waitForAngularEnabled(false);
heirLoss.get();
});
it('Check the "CheckOut" button in the mini-cart with product', () => {
doubleClick(heirLoss.header.card);
waitToBeVisible(cartComponent.header.title);
expect(isDisplayed(cartComponent.header.title)).toBe(true);
expect(isDisplayed(cartComponent.content.shopHair)).toBe(true);
expect(isDisplayed(cartComponent.content.shopEd)).toBe(true);
expect(isDisplayed(cartComponent.content.shopSkin)).toBe(true);
expect(isDisplayed(cartComponent.content.shopDailyHealt)).toBe(true);
});
});
配置.js
require("@babel/register");
require("protractor");
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['./src/tests/**.e2e.js'],
multiCapabilities: [{
browserName: 'chrome'
}],
//Global configuration
baseUrl: 'https:/facebook.com/',
//Allure configuration
/*global jasmine browser allure*/
onPrepare: () => {
browser.manage().window().maximize();
var AllureReporter = require('jasmine-allure-reporter');
jasmine.getEnv().addReporter(new AllureReporter());
jasmine.getEnv().afterEach((done) => {
if (done.status === "failed") {
browser.takeScreenshot().then((png) => {
allure.createAttachment('Screenshot', () => new Buffer(png, 'base64'), 'image/png')();
done();
});
}
});
}
};
解决方案
我正在思考isDisplayed
并且waitToBeVisible
是异步的并且被卡在某个地方。
尝试:
beforeAll(() => {
console.log('Before waiting for angular enabled');
browser.waitForAngularEnabled(false);
console.log('After waiting for angular enabled, before heirLoss.get');
heirLoss.get();
console.log('After heirLoss.get');
});
it('Check the "CheckOut" button in the mini-cart with product', () => {
console.log('before doubleClick');
doubleClick(heirLoss.header.card);
console.log('after doubleClick, before waitToBeVisible');
waitToBeVisible(cartComponent.header.title);
console.log('after waitToBeVisible, before first isDisplayed');
expect(isDisplayed(cartComponent.header.title)).toBe(true);
console.log('after first isDisplayed, before 2nd isDisplayed');
// keep adding console.log before and after these assertions and see where it gets stuck.
expect(isDisplayed(cartComponent.content.shopHair)).toBe(true);
expect(isDisplayed(cartComponent.content.shopEd)).toBe(true);
expect(isDisplayed(cartComponent.content.shopSkin)).toBe(true);
expect(isDisplayed(cartComponent.content.shopDailyHealt)).toBe(true);
});
一旦你对它卡在哪里有了一个很好的了解,你就可以更好地了解它为什么卡在那里。
推荐阅读
- r - 将地理添加到 tmap World 数据框
- node.js - NodeJS Streams 等待所有数据流式传输
- r - 函数返回 NaN
- java - 在分隔符上拆分数组,但保留部分分隔符
- python - PyQt5 QListWidget 删除鼠标悬停 QListItem
- razor - 使用 razor mvc 和 jquery 的复选框禁用文本框
- r - 将不同文件夹中的 .tsv 文件读取到 R 环境中并添加具有文件夹名称的列
- json - 当属性可以是整数或布尔值时,什么解析对象?
- google-cloud-platform - 从元数据转储创建实例的最佳方式
- java - 有没有办法在 Jenkins Pipeline 文件夹级共享库中包含一个 jar?