【问题标题】:Run protractor in localhost server during countinuous integration在持续集成期间在 localhost 服务器中运行量角器
【发布时间】:2019-02-27 21:24:11
【问题描述】:

我一直在学习量角器,并且在我们的生产网络应用程序中编写了一些测试。现在我想将这些测试集成到我们的持续集成中。如果测试失败,则不应继续持续发布。

为了实现这一点,我计划在本地服务器上使用将要投入生产的目标版本运行相同的测试。我的项目是用 angularjs 编码的。我的 package.json 文件有一个脚本来启动本地服务器和其他要测试的服务器,但我无法等待服务器完成后再运行我的测试。

问题是:如何在 localhost Web 服务器中运行我的测试?

我的硒配置文件

exports.config = {
    framework: 'jasmine',
    seleniumAdress: 'http://localhost:4444/wd/hub',
    suites: {
        fluxos: './specs/fluxos/spec.js',
        validacoes: './specs/validacoes/spec.js'
    },
    capabilities: {
        browserName: 'chrome'
    },
}

我的 package.json

{
  "scripts": {
    "build": "gulp build:dev",
    "build:hmg": "gulp build:hmg",
    "build:hmgi": "gulp build:hmgInterno",
    "build:prod": "gulp build:prod",
    "coverage": "gulp test:build",
    "lint": "./node_modules/.bin/eslint **/*.js",
    "precommit": "npm run lint",
    "prepush": "npm run coverage",
    "start": "gulp serve:dev",
    "start:hmg": "gulp serve:hmg",
    "start:hmgi": "gulp serve:hmgInterno",
    "start:prod": "gulp serve:prod",
    "test": "gulp test",
    "integration:validacoes": "gulp serve:prod && protractor ./tests/integration/conf.js --suite validacoes",
    "integration:fluxos": "gulp serve:prod && protractor ./tests/integration/conf.js --suite fluxos"
  },
  "dependencies": {
    "@uirouter/angularjs": "^1.0.15",
    "@uirouter/core": "^5.0.17",
    "angular": "^1.6.8",
    "angular-cookies": "^1.6.8",
    "angular-format-masks": "^1.0.2",
    "angular-i18n": "^1.6.8",
    "angular-input-masks": "^4.1.0",
    "angular-sanitize": "^1.6.8",
    "angular-spinner": "^1.0.1",
    "angular-touch": "^1.6.8",
    "angulartics": "^1.6.0",
    "angulartics-google-tag-manager": "0.0.1",
    "ng-accessibility-bar": "^1.2.3",
    "spin.js": "^2.3.2"
  },
  "devDependencies": {
    "angular-mocks": "^1.6.10",
    "autoprefixer": "^8.1.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "browser-sync": "^2.23.7",
    "browser-sync-spa": "^1.0.3",
    "del": "^2.2.2",
    "eslint": "^3.12.2",
    "eslint-config-airbnb": "^13.0.0",
    "eslint-config-angular": "^0.5.0",
    "eslint-plugin-angular": "^1.6.1",
    "eslint-plugin-import": "^2.11.0",
    "eslint-plugin-jsx-a11y": "^2.0.0",
    "eslint-plugin-react": "^6.8.0",
    "gulp": "^3.9.1",
    "gulp-cachebust": "0.0.6",
    "gulp-clean-css": "^3.9.3",
    "gulp-eslint": "^4.0.2",
    "gulp-group-css-media-queries": "^1.2.2",
    "gulp-gzip": "^1.4.2",
    "gulp-htmlmin": "^3.0.0",
    "gulp-if": "^2.0.1",
    "gulp-imagemin": "^3.4.0",
    "gulp-ng-annotate": "^2.1.0",
    "gulp-ng-constant": "^2.0.0-3",
    "gulp-postcss": "^7.0.1",
    "gulp-rename": "^1.2.2",
    "gulp-sass": "^3.2.1",
    "gulp-sourcemaps": "^2.6.4",
    "gulp-uglify": "^1.5.4",
    "gulp-uglify-es": "^1.0.4",
    "gulp-uncss": "^1.0.6",
    "gulp-useref": "^3.1.5",
    "husky": "^0.12.0",
    "imagemin-gifsicle": "^5.2.0",
    "imagemin-jpegtran": "^5.0.2",
    "imagemin-optipng": "^5.2.1",
    "imagemin-svgo": "^5.2.4",
    "jasmine": "^2.99.0",
    "jasmine-core": "^2.99.1",
    "karma": "^1.7.1",
    "karma-babel-preprocessor": "^6.0.1",
    "karma-chrome-launcher": "^2.2.0",
    "karma-coverage": "^1.1.1",
    "karma-jasmine": "^1.1.1",
    "karma-junit-reporter": "^1.2.0",
    "karma-phantomjs-launcher": "^1.0.2",
    "karma-spec-reporter": "0.0.26",
    "karma-threshold-reporter": "^0.1.15",
    "postcss-pxtorem": "^4.0.1",
    "protractor": "^5.4.2",
    "protractor-helper": "^3.7.0",
    "run-sequence": "^1.2.2"
  }
}

【问题讨论】:

  • 您的开发盒上是否有本地版本的应用?

标签: angularjs testing protractor integration-testing


【解决方案1】:

您可以有一个 shell 脚本来检查您的服务器是否处于无限循环中,一旦服务器启动就会退出。然后你就可以运行你的测试了

例如:./wait-for.sh && npm test

另一种方法是使用docker 和docker-compose 将所有内容容器化,然后运行测试。

【讨论】:

  • 没有任何 npm 包可以做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
相关资源
最近更新 更多