https://github.com/angular/angular
Revision e539f532cd8d4fa6ea2dafa710155585b97269b0 authored by George Kalpakas on 16 May 2022, 13:32:32 UTC, committed by Jessica Janiuk on 16 May 2022, 16:35:44 UTC
Previously, the examples were split across shards based on the order in
which `globby()` returned them. This was based on the assumption that
`globby()`/the OS would list files in a deterministic order. However, it
turns out that examples can be listed in different orders between
executions, leading in them not being split correctly across shards on
CI (which further means that some examples may be tested multiple times
and others may not be tested at all).
You can see an example [here][1], where the `getting-started` example is
tested in both the 4th and 5th shards.

This commit fixes this by explicitly sorting the examples based on their
path.

[1]: https://circleci.com/gh/angular/angular/1165448

PR Close #46005
1 parent 57adade
Raw File
Tip revision: e539f532cd8d4fa6ea2dafa710155585b97269b0 authored by George Kalpakas on 16 May 2022, 13:32:32 UTC
test(docs-infra): ensure examples are split correctly across shards (#46005)
Tip revision: e539f53
package.json
{
  "name": "angular-srcs",
  "version": "13.3.8",
  "private": true,
  "description": "Angular - a web framework for modern web apps",
  "homepage": "https://github.com/angular/angular",
  "bugs": "https://github.com/angular/angular/issues",
  "license": "MIT",
  "//engines-comment": "Keep this in sync with /aio/package.json and /aio/tools/examples/shared/package.json",
  "engines": {
    "node": "^12.20.0 || ^14.15.0 || >=16.10.0",
    "yarn": ">=1.22.4 <2",
    "npm": "Please use yarn instead of NPM to install dependencies"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/angular/angular.git"
  },
  "scripts": {
    "/": "",
    "// 1": "Many of our checks/scripts/tools have moved to our ng-dev tool",
    "// 2": "Find the usage you are looking for with:",
    "// 3": "yarn ng-dev --help",
    "/ ": "",
    "postinstall": "node scripts/webdriver-manager-update.js && node --preserve-symlinks --preserve-symlinks-main ./tools/postinstall-patches.js",
    "prepare": "husky install",
    "test": "bazelisk test",
    "test-tsec": "bazelisk test //... --build_tag_filters=tsec --test_tag_filters=tsec",
    "lint": "yarn -s tslint && yarn -s ng-dev format changed --check",
    "tslint": "tslint -c tslint.json --project tsconfig-tslint.json",
    "public-api:check": "node goldens/public-api/manage.js test",
    "public-api:update": "node goldens/public-api/manage.js accept",
    "symbol-extractor:check": "node tools/symbol-extractor/run_all_symbols_extractor_tests.js test",
    "symbol-extractor:update": "node tools/symbol-extractor/run_all_symbols_extractor_tests.js accept",
    "ts-circular-deps:check": "yarn -s ng-dev ts-circular-deps check --config ./packages/circular-deps-test.conf.js",
    "ts-circular-deps:approve": "yarn -s ng-dev ts-circular-deps approve --config ./packages/circular-deps-test.conf.js",
    "check-tooling-setup": "yarn tsc --project .ng-dev/tsconfig.json"
  },
  "// 1": "dependencies are used locally and by bazel",
  "dependencies": {
    "@angular-devkit/build-angular": "13.3.0",
    "@angular-devkit/build-optimizer": "0.1302.1",
    "@angular-devkit/core": "13.3.0",
    "@angular-devkit/schematics": "13.3.0",
    "@angular/animations-12": "npm:@angular/animations@12.2.13",
    "@angular/cli": "13.3.0",
    "@angular/common-12": "npm:@angular/common@12.2.13",
    "@angular/core-12": "npm:@angular/core@12.2.13",
    "@angular/forms-12": "npm:@angular/forms@12.2.13",
    "@angular/platform-browser-12": "npm:@angular/platform-browser@12.2.13",
    "@angular/platform-browser-dynamic-12": "npm:@angular/platform-browser-dynamic@12.2.13",
    "@angular/platform-server-12": "npm:@angular/platform-server@12.2.13",
    "@angular/router-12": "npm:@angular/router@12.2.13",
    "@babel/cli": "7.17.3",
    "@babel/core": "7.17.5",
    "@babel/generator": "7.17.3",
    "@babel/parser": "7.17.3",
    "@babel/preset-env": "7.16.11",
    "@babel/template": "7.16.7",
    "@babel/traverse": "7.17.3",
    "@babel/types": "7.17.0",
    "@bazel/concatjs": "5.3.0",
    "@bazel/esbuild": "5.3.0",
    "@bazel/jasmine": "5.3.0",
    "@bazel/protractor": "5.3.0",
    "@bazel/rollup": "5.3.0",
    "@bazel/runfiles": "5.3.0",
    "@bazel/terser": "5.3.0",
    "@microsoft/api-extractor": "7.19.4",
    "@rollup/plugin-babel": "^5.3.0",
    "@rollup/plugin-commonjs": "^21.0.0",
    "@rollup/plugin-node-resolve": "^13.0.4",
    "@schematics/angular": "13.3.0",
    "@types/angular": "^1.6.47",
    "@types/babel__core": "7.1.18",
    "@types/babel__generator": "7.6.4",
    "@types/babel__template": "7.4.1",
    "@types/babel__traverse": "7.14.2",
    "@types/base64-js": "1.3.0",
    "@types/bluebird": "^3.5.27",
    "@types/convert-source-map": "^1.5.1",
    "@types/diff": "^5.0.0",
    "@types/events": "3.0.0",
    "@types/hammerjs": "2.0.41",
    "@types/inquirer": "^8.0.0",
    "@types/jasmine": "3.10.3",
    "@types/jasmine-ajax": "^3.3.1",
    "@types/jasminewd2": "^2.0.8",
    "@types/multimatch": "^4.0.0",
    "@types/node": "^12.11.1",
    "@types/selenium-webdriver": "3.0.7",
    "@types/semver": "^7.3.4",
    "@types/shelljs": "^0.8.6",
    "@types/systemjs": "0.19.32",
    "@types/uuid": "^8.3.1",
    "@types/yargs": "^17.0.3",
    "@webcomponents/custom-elements": "^1.1.0",
    "angular-1.5": "npm:angular@1.5",
    "angular-1.6": "npm:angular@1.6",
    "angular-1.7": "npm:angular@1.7",
    "angular-1.8": "npm:angular@1.8",
    "angular-mocks-1.5": "npm:angular-mocks@1.5",
    "angular-mocks-1.6": "npm:angular-mocks@1.6",
    "angular-mocks-1.7": "npm:angular-mocks@1.7",
    "angular-mocks-1.8": "npm:angular-mocks@1.8",
    "base64-js": "1.5.1",
    "bluebird": "^3.7.2",
    "brotli": "^1.3.2",
    "canonical-path": "1.0.0",
    "chalk": "^4.1.0",
    "chokidar": "^3.5.1",
    "convert-source-map": "^1.5.1",
    "core-js-bundle": "^3.10.2",
    "dependency-graph": "^0.11.0",
    "diff": "^5.0.0",
    "domino": "~2.1.6",
    "google-closure-compiler": "20220405.0.0",
    "graceful-fs": "4.2.9",
    "hammerjs": "~2.0.8",
    "http-server": "^14.0.0",
    "incremental-dom": "0.7.0",
    "jasmine": "^3.5.0",
    "jasmine-ajax": "^4.0.0",
    "jasmine-core": "^3.5.0",
    "jquery": "3.6.0",
    "js-levenshtein": "^1.1.6",
    "karma": "~6.3.0",
    "karma-chrome-launcher": "^3.1.0",
    "karma-firefox-launcher": "^2.1.0",
    "karma-jasmine": "^4.0.1",
    "karma-requirejs": "^1.1.0",
    "karma-sourcemap-loader": "^0.3.7",
    "magic-string": "0.26.1",
    "materialize-css": "1.0.0",
    "nodejs-websocket": "^1.7.2",
    "protractor": "^7.0.0",
    "puppeteer": "10.2.0",
    "reflect-metadata": "^0.1.3",
    "requirejs": "^2.3.6",
    "rollup": "~2.67.0",
    "rollup-plugin-preserve-shebang": "^1.0.1",
    "rollup-plugin-sourcemaps": "^0.6.3",
    "rxjs": "^6.6.7",
    "selenium-webdriver": "3.5.0",
    "shelljs": "^0.8.5",
    "source-map": "^0.6.1",
    "source-map-support": "0.5.21",
    "sourcemap-codec": "^1.4.8",
    "systemjs": "0.18.10",
    "terser": "^5.8.0",
    "tmp": "0.2.1",
    "tsickle": "0.38.1",
    "tslib": "^2.3.0",
    "tslint": "6.1.3",
    "typescript": "~4.6.2",
    "xhr2": "0.2.1",
    "yargs": "^17.2.1"
  },
  "// 2": "devDependencies are not used under Bazel. Many can be removed after test.sh is deleted.",
  "devDependencies": {
    "@angular/dev-infra-private": "https://github.com/angular/dev-infra-private-builds.git#3ff6a9e935cf0d1a8694e7f5842e5e538da64030",
    "@bazel/bazelisk": "^1.7.5",
    "@bazel/buildifier": "^5.0.0",
    "@bazel/ibazel": "^0.15.8",
    "@octokit/graphql": "^4.6.1",
    "@types/cldrjs": "^0.4.22",
    "@types/cli-progress": "^3.4.2",
    "@yarnpkg/lockfile": "^1.1.0",
    "check-side-effects": "0.0.23",
    "cldr": "7.1.1",
    "cldrjs": "0.5.5",
    "conventional-changelog": "^3.1.24",
    "firebase-tools": "^9.0.0",
    "glob": "7.2.0",
    "gulp": "^4.0.2",
    "gulp-conventional-changelog": "^2.0.35",
    "husky": "7.0.4",
    "inquirer": "^8.0.0",
    "karma-sauce-launcher": "^4.3.6",
    "madge": "^5.0.0",
    "multimatch": "^6.0.0",
    "prettier": "^2.5.1",
    "sauce-connect": "https://saucelabs.com/downloads/sc-4.7.1-linux.tar.gz",
    "semver": "^7.3.5",
    "ts-node": "^10.0.0",
    "tsec": "0.2.1",
    "tslint-eslint-rules": "5.4.0",
    "tslint-no-toplevel-property-access": "0.0.2",
    "typed-graphqlify": "^3.1.1",
    "vlq": "2.0.4",
    "vrsource-tslint-rules": "6.0.0"
  },
  "// 4": "Overwrite graceful-fs to a version that does not rely on the 'natives' package. This fixes gulp for >= 10.13, more information: #28213",
  "// 5": "Ensure a single version of webdriver-manager so it is hoisted as the integration tests depend on it being found at ../../node_modules/webdriver-manager",
  "// 6": "Ensure that transitive dependencies on `https-proxy-agent` are at minimum v5 as older versions patch NodeJS directly, breaking tools like webdriver which is used by the karma-sauce-launcher as an example.",
  "// 7": "Ensure that a single instance of the `saucelabs` package is used. Protractor and the Karma sauce launcher pull this package as dependency. A single instance allows for e.g. easier patching in the Karma config.",
  "resolutions": {
    "**/graceful-fs": "4.2.9",
    "**/webdriver-manager": "12.1.8",
    "**/https-proxy-agent": "5.0.0",
    "**/saucelabs": "7.1.3"
  }
}
back to top