Selenium 和 Jasmine:BeforeAll 在构建 Firefox 驱动程序时静默失败
Selenium and Jasmine: BeforeAll fails silently while building Firefox driver
我已经用 selenium 为我的应用程序编写了一些测试。我 运行 他们在本地和我们的 GitLab-CI 上。他们在本地工作,但在 CI 上他们突然失败(我没有更改相关的 afaik)。让我挠头的是,beforeAll 似乎不是 运行 结尾。
考虑一下:
let driver;
const options = new Options();
if (testConfig.headless) {
options.addArguments('-headless');
}
describe('my app', () => {
beforeAll(async done => {
console.log('beforeAll');
try {
driver = await new Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();
} catch (e) {
console.log('error', e);
}
console.log(!driver ? 'driver is not' : driver is');
done();
});
});
beforeEach(async done => {
await driver.get(/* my apps path */);
done();
});
CI 的结果:beforeEach
中的每个测试都失败了,因为 driver
是 undefined
。但是 beforeAll
只报告 'beforeAll'。最后的日志什么也没说。所以 beforeAll
函数似乎失败了,但无声无息,脚本仍然继续。我有什么办法可以解决甚至调试这个问题吗?
我的依赖
"devDependencies": {
"geckodriver": "^1.20.0",
"jasmine": "^3.6.3",
"selenium-webdriver": "^4.0.0-alpha.7",
原因是,与上述示例相反,浏览器未以无头模式启动。我的错。但是,什么都不说是一种非常糟糕的行为。我把这个留在这里,如果有人面临同样的问题。
我已经用 selenium 为我的应用程序编写了一些测试。我 运行 他们在本地和我们的 GitLab-CI 上。他们在本地工作,但在 CI 上他们突然失败(我没有更改相关的 afaik)。让我挠头的是,beforeAll 似乎不是 运行 结尾。
考虑一下:
let driver;
const options = new Options();
if (testConfig.headless) {
options.addArguments('-headless');
}
describe('my app', () => {
beforeAll(async done => {
console.log('beforeAll');
try {
driver = await new Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();
} catch (e) {
console.log('error', e);
}
console.log(!driver ? 'driver is not' : driver is');
done();
});
});
beforeEach(async done => {
await driver.get(/* my apps path */);
done();
});
CI 的结果:beforeEach
中的每个测试都失败了,因为 driver
是 undefined
。但是 beforeAll
只报告 'beforeAll'。最后的日志什么也没说。所以 beforeAll
函数似乎失败了,但无声无息,脚本仍然继续。我有什么办法可以解决甚至调试这个问题吗?
我的依赖
"devDependencies": {
"geckodriver": "^1.20.0",
"jasmine": "^3.6.3",
"selenium-webdriver": "^4.0.0-alpha.7",
原因是,与上述示例相反,浏览器未以无头模式启动。我的错。但是,什么都不说是一种非常糟糕的行为。我把这个留在这里,如果有人面临同样的问题。