爲了在bitbucket流水線上進行e2e測試,我必須對bitbucket-pipelines.yml,package.json和protractor.conf.js進行一些更改。
首先,bitbucket-pipelines.yml看起來像這樣。我們使用了adrianmarinica提供的碼頭圖像,而不是默認的節點圖像。
# You can specify a custom docker image from Docker Hub as your build environment.
image: adrianmarinica/bitbucket-pipelines-protractor
pipelines:
branches:
master:
- step:
caches:
- node
script:
- npm install
- npm start
- protractor protractor.conf.js
然後,的package.json看起來像這樣
"scripts": {
...
"start": "ng serve &"
...
}
這裏的關鍵變化是啓動命令的 「&」。這將在後臺運行,允許量角器命令被解僱。
最後,一些調整至protractor.conf.js
const { SpecReporter } = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 1800000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
getPageTimeout: 120000,
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': [
'--no-sandbox',
'--disable-gpu'
]
}
},
useAllAngular2AppRoots: true,
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 120000,
print: function() { }
},
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e/tsconfig.e2e.json'
});
},
onPrepare() {
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};
如果測試成功地在本地運行,他們也應該在管道,按照這個配置,環境應該是相同的。
這實際上是一個角度2的應用程序 – MarBVI
這個肩膀適用於Angular 1/2甚至是Angular 4. – demouser123
但是爲了運行E2E testa,我需要將該應用程序在端口4200處對嗎?我如何在管道中做到這一點?因爲,如果我在腳本中放置npm start,它會卡在那裏,量角器語句永遠不會被觸發 – MarBVI