.DS_Store
e2e/reports
e2e/screenshots
-examples/__build__
+__build__
playground_dist
yarn-error.log
temp
const axios = require('axios')
-const BS_USER = process.env.BS_USER
-const BS_KEY = process.env.BS_KEY
+const { BS_USER, BS_KEY } = process.env
function getKey(client) {
// const { capabilities, currentTest } = client
* Running tests on remote browsers
*/
-const BS_USER = process.env.BS_USER
-const BS_KEY = process.env.BS_KEY
+const { BS_USER, BS_KEY } = process.env
const nwConf = {
src_folders: ['e2e/specs'],
browser: 'internet explorer',
browser_version: '11',
// name: 'Bstack-[Nightwatch] Vue Router',
- // 'browserstack.video': true
+ // 'browserstack.video': true,
},
},
const args = process.argv.slice(2)
// if we are running yarn dev locally, we can pass --dev to avoid launching another server instance
-const server = args.indexOf('--dev') > -1 ? null : require('./server')
+const server =
+ args.indexOf('--dev') > -1
+ ? null
+ : process.env.CI || args.indexOf('--ci') > -1
+ ? require('./staticServer')
+ : require('./devServer')
// allow running browserstack local
const isLocal = args.indexOf('--local') > -1
--- /dev/null
+const handler = require('serve-handler')
+const http = require('http')
+const fs = require('fs')
+const path = require('path')
+
+/** @type {string[]} */
+let examples = []
+const buildDir = path.join(__dirname, '__build__')
+fs.readdirSync(buildDir).forEach(file => {
+ if (file.endsWith('.html') && !/index\.html$/.test(file)) {
+ const fullPath = path.join(buildDir, file)
+ if (fs.statSync(fullPath).isFile() && fs.existsSync(fullPath)) {
+ examples.push(file.replace(/\.html$/, ''))
+ }
+ }
+})
+
+const server = http.createServer((request, response) => {
+ return handler(request, response, {
+ public: '__build__',
+ cleanUrls: true,
+ rewrites: examples.map(name => ({
+ source: `${name}/**`,
+ trailingSlash: true,
+ destination: `${name}.html`,
+ })),
+ })
+})
+
+const port = process.env.PORT || 8080
+module.exports = server.listen(port, () => {
+ console.log(`Server listening on http://localhost:${port}, Ctrl+C to stop`)
+})
const globalCss = resolve(__dirname, 'global.css')
-module.exports = {
+const config = (env = {}) => ({
// Expose __dirname to allow automatically setting basename.
context: __dirname,
node: {
__dirname: true,
},
- mode: process.env.NODE_ENV || 'development',
+ mode: env.prod ? 'production' : 'development',
+ devtool: env.prod ? 'source-map' : 'inline-source-map',
- devtool: 'inline-source-map',
devServer: {
historyApiFallback: {
rewrites: examples.map(name => ({
},
resolve: {
alias: {
- vue: resolve(__dirname, '../node_modules/vue/dist/vue.esm.js'),
+ vue: resolve(__dirname, '../node_modules/vue/dist/vue.esm-bundler.js'),
'vue-router': join(__dirname, '..', 'src'),
},
// Add `.ts` and `.tsx` as a resolvable extension.
template: resolve(__dirname, 'index.html'),
}),
],
-}
+})
+
+module.exports = config
"release": "bash scripts/release.sh",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 1",
"build:playground": "webpack --env.prod",
+ "build:e2e": "webpack --env.prod --config e2e/webpack.config.js",
"dev:e2e": "webpack-dev-server --mode=development --config e2e/webpack.config.js",
"lint": "prettier -c --parser typescript \"{src,__tests__,e2e}/**/*.[jt]s?(x)\"",
"lint:fix": "yarn run lint --write",
"test:types": "tsc --build tsconfig.json",
"test:unit": "jest --coverage",
- "test": "yarn run test:types && yarn run test:unit"
+ "test": "yarn run test:types && yarn run test:unit",
+ "test:e2e": "node e2e/runner.js",
+ "test:e2e:ci": "node e2e/runner.js --local -e ie,android44 -c e2e/nightwatch.browserstack.js e2e/specs/basic.js"
},
"gitHooks": {
"pre-commit": "lint-staged",
"rollup-plugin-terser": "^5.3.0",
"rollup-plugin-typescript2": "^0.26.0",
"selenium-server": "^3.141.59",
+ "serve-handler": "^6.1.2",
"style-loader": "^1.1.3",
"ts-jest": "^25.3.0",
"ts-loader": "^6.2.2",
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+content-disposition@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+ integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
+
content-disposition@0.5.3:
version "0.5.3"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+fast-url-parser@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d"
+ integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=
+ dependencies:
+ punycode "^1.3.2"
+
fastq@^1.6.0:
version "1.6.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58"
integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==
+mime-db@~1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
+ integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==
+
+mime-types@2.1.18:
+ version "2.1.18"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
+ integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
+ dependencies:
+ mime-db "~1.33.0"
+
mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.26"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-path-is-inside@^1.0.2:
+path-is-inside@1.0.2, path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+path-to-regexp@2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45"
+ integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==
+
path-type@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-punycode@^1.2.4:
+punycode@^1.2.4, punycode@^1.3.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
randombytes "^2.0.5"
safe-buffer "^5.1.0"
+range-parser@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+ integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
+
range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==
+serve-handler@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.2.tgz#f05b0421a313fff2d257838cba00cbcc512cd2b6"
+ integrity sha512-RFh49wX7zJmmOVDcIjiDSJnMH+ItQEvyuYLYuDBVoA/xmQSCuj+uRmk1cmBB5QQlI3qOiWKp6p4DUGY+Z5AB2A==
+ dependencies:
+ bytes "3.0.0"
+ content-disposition "0.5.2"
+ fast-url-parser "1.1.3"
+ mime-types "2.1.18"
+ minimatch "3.0.4"
+ path-is-inside "1.0.2"
+ path-to-regexp "2.2.1"
+ range-parser "1.2.0"
+
serve-index@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"