diff --git a/package-lock.json b/package-lock.json index d271745..8af11c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1200,7 +1200,7 @@ "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "6.26.0" } }, "babel-plugin-transform-strict-mode": { @@ -1219,36 +1219,36 @@ "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "3.2.8", + "invariant": "2.2.4", + "semver": "5.6.0" }, "dependencies": { "browserslist": { @@ -1257,8 +1257,8 @@ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" + "caniuse-lite": "1.0.30000893", + "electron-to-chromium": "1.3.79" } } } @@ -1310,7 +1310,7 @@ "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", "dev": true, "requires": { - "babel-plugin-transform-flow-strip-types": "^6.22.0" + "babel-plugin-transform-flow-strip-types": "6.22.0" } }, "babel-preset-react": { @@ -1698,7 +1698,7 @@ "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=", "dev": true, "requires": { - "base64-js": "^1.1.2" + "base64-js": "1.3.0" } }, "browser-stdout": { @@ -1901,14 +1901,14 @@ "integrity": "sha512-otAcPmu8TiHZ38cIL3NjQa1nGoSQRRe8WDDUgj5ZUwJWn1wzOYBwVSJbpVyzZ0sesQeKlYsPu9DG70fhh6AK9g==", "dev": true, "requires": { - "@types/error-stack-parser": "^1.3.18", - "@types/lodash": "^4.14.72", - "callsite": "^1.0.0", - "chalk": "^2.4.0", - "error-stack-parser": "^1.3.3", - "highlight-es": "^1.0.0", - "lodash": "4.6.1 || ^4.16.1", - "pinkie-promise": "^2.0.0" + "@types/error-stack-parser": "1.3.18", + "@types/lodash": "4.14.117", + "callsite": "1.0.0", + "chalk": "2.4.1", + "error-stack-parser": "1.3.6", + "highlight-es": "1.0.3", + "lodash": "4.17.11", + "pinkie-promise": "2.0.1" }, "dependencies": { "ansi-styles": { @@ -1917,7 +1917,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "chalk": { @@ -1926,9 +1926,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "has-flag": { @@ -1949,7 +1949,7 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -2133,8 +2133,8 @@ "integrity": "sha512-6zI6LbR2IiGmduFZededaerEr9hHXabxT/L+fRrdq65a0CfyLMzpq0BKuZiqN0Upqcacsb6q2POj7fmobwBsEA==", "dev": true, "requires": { - "commander": "2.11.x", - "ws": "3.3.x" + "commander": "2.11.0", + "ws": "3.3.3" }, "dependencies": { "commander": { @@ -2155,9 +2155,9 @@ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "1.0.0", + "safe-buffer": "5.1.2", + "ultron": "1.1.1" } } } @@ -2768,10 +2768,10 @@ "integrity": "sha512-0W171WccAjQGGTKLhw4m2nnl0zPHUlTO/I8td4XzJgIB8Hg3ZZx71qT4G4eX8OVsSiaAKiUMy73E3nsbPlg2DQ==", "dev": true, "requires": { - "inherits": "^2.0.1", - "source-map": "^0.1.38", - "source-map-resolve": "^0.5.1", - "urix": "^0.1.0" + "inherits": "2.0.3", + "source-map": "0.1.43", + "source-map-resolve": "0.5.2", + "urix": "0.1.0" }, "dependencies": { "source-map": { @@ -2780,7 +2780,7 @@ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } } } @@ -3326,8 +3326,8 @@ "integrity": "sha1-CAjDNppyfNeWejn/NOvJJriBRqg=", "dev": true, "requires": { - "ip": "^1.1.3", - "pinkie-promise": "^1.0.0" + "ip": "1.1.5", + "pinkie-promise": "1.0.0" }, "dependencies": { "pinkie": { @@ -3342,7 +3342,7 @@ "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", "dev": true, "requires": { - "pinkie": "^1.0.0" + "pinkie": "1.0.0" } } } @@ -3520,7 +3520,7 @@ "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", "dev": true, "requires": { - "stackframe": "^0.3.1" + "stackframe": "0.3.1" } }, "es-abstract": { @@ -5423,8 +5423,8 @@ "integrity": "sha512-SLg/KsHBbinR/pCX3PF5l1YlR28hLp0X+bcpf77PtMJ6zvAQ5kRjtCPV5Wt1wHXsXWZN0eTUZ15R8ZYpi/CdCA==", "dev": true, "requires": { - "plugin-error": "^0.1.2", - "through2": "^2.0.3" + "plugin-error": "0.1.2", + "through2": "2.0.3" } }, "gulp-data": { @@ -5433,9 +5433,9 @@ "integrity": "sha512-fvpQJvgVyhkwRcFP3Y9QUS9sWvIFsAlJDinQjhLuknmHZz52jH0gHmTujYBFjr9aTlTHlrAayY5m1d0tA1HzGQ==", "dev": true, "requires": { - "plugin-error": "^0.1.2", - "through2": "^2.0.0", - "util-extend": "^1.0.1" + "plugin-error": "0.1.2", + "through2": "2.0.3", + "util-extend": "1.0.3" } }, "gulp-run-command": { @@ -5447,7 +5447,7 @@ "babel-plugin-transform-runtime": "6.15.0", "cross-spawn": "4.0.0", "spawn-args": "0.2.0", - "timeout-as-promise": "^1.0.0" + "timeout-as-promise": "1.0.0" }, "dependencies": { "babel-plugin-transform-runtime": { @@ -5456,7 +5456,7 @@ "integrity": "sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=", "dev": true, "requires": { - "babel-runtime": "^6.9.0" + "babel-runtime": "6.26.0" } }, "cross-spawn": { @@ -5465,8 +5465,8 @@ "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "lru-cache": "4.1.3", + "which": "1.3.1" } } } @@ -5610,9 +5610,9 @@ "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==", "dev": true, "requires": { - "chalk": "^2.4.0", - "is-es2016-keyword": "^1.0.0", - "js-tokens": "^3.0.0" + "chalk": "2.4.1", + "is-es2016-keyword": "1.0.0", + "js-tokens": "3.0.2" }, "dependencies": { "ansi-styles": { @@ -5621,7 +5621,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "chalk": { @@ -5630,9 +5630,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "has-flag": { @@ -5653,7 +5653,7 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -6179,7 +6179,7 @@ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "dev": true, "requires": { - "ci-info": "^1.5.0" + "ci-info": "1.6.0" } }, "is-data-descriptor": { @@ -6763,7 +6763,7 @@ "integrity": "sha1-La4yQ4Xmbj11W+yD+Gx77qYc64M=", "dev": true, "requires": { - "os-family": "^1.0.0" + "os-family": "1.0.0" } }, "load-json-file": { @@ -7067,10 +7067,10 @@ "integrity": "sha512-HQwkKFTZeUOrDi1Duf2CSUa/pSpcaCHKLdx3D/Z16DsipzByOBffcg5y0JZA1q0n80dYgLXe2hFM9JGNgBsTDw==", "dev": true, "requires": { - "ansi-escapes": "^2.0.0", - "async-exit-hook": "^1.1.2", - "onetime": "^2.0.1", - "wrap-ansi": "^2.1.0" + "ansi-escapes": "2.0.0", + "async-exit-hook": "1.1.2", + "onetime": "2.0.1", + "wrap-ansi": "2.1.0" }, "dependencies": { "ansi-escapes": { @@ -7085,7 +7085,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } } } @@ -7249,7 +7249,7 @@ "integrity": "sha512-XQWEV4NdsB6HymtjW5sJthh1oHr/IZZPp+lOhu+RPkWDD0iQYXVCe8ozGQmi5ZxWqXYteERjHhN80zxLV/TNWA==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "1.0.5" } }, "math-expression-evaluator": { @@ -7344,7 +7344,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "^2.0.1" + "readable-stream": "2.3.6" } }, "methods": { @@ -8500,11 +8500,11 @@ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", "dev": true, "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" + "ansi-cyan": "0.1.1", + "ansi-red": "0.1.1", + "arr-diff": "1.1.0", + "arr-union": "2.1.0", + "extend-shallow": "1.1.4" }, "dependencies": { "arr-diff": { @@ -8513,8 +8513,8 @@ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", "dev": true, "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" + "arr-flatten": "1.1.0", + "array-slice": "0.2.3" } }, "arr-union": { @@ -8529,7 +8529,7 @@ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", "dev": true, "requires": { - "kind-of": "^1.1.0" + "kind-of": "1.1.0" } }, "kind-of": { @@ -9266,7 +9266,7 @@ "integrity": "sha1-vXUj6ga3AWLzcJeQFrU6aGxg6Q8=", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } }, "proxy-addr": { @@ -9291,7 +9291,7 @@ "integrity": "sha1-mvZ6mdex0BMuUaUDCZ04qNKs4sM=", "dev": true, "requires": { - "table-parser": "^0.1.3" + "table-parser": "0.1.3" } }, "ps-tree": { @@ -9486,7 +9486,7 @@ "integrity": "sha1-mPfZbqoh0rTHov69Y9L8jPNen5s=", "dev": true, "requires": { - "callsite": "^1.0.0" + "callsite": "1.0.0" } }, "read-pkg": { @@ -10167,7 +10167,7 @@ "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", "dev": true, "requires": { - "truncate-utf8-bytes": "^1.0.0" + "truncate-utf8-bytes": "1.0.2" } }, "sax": { @@ -11221,7 +11221,7 @@ "integrity": "sha1-BEHPzhallIFoTCfRtaZ/8VpDx7A=", "dev": true, "requires": { - "connected-domain": "^1.0.0" + "connected-domain": "1.0.0" } }, "tapable": { @@ -11249,73 +11249,73 @@ "integrity": "sha512-pcuNjSYqiHNZG10xZJN9qlhzOhf/F4DZTZuC7fU2ASzRolpT4ScmhAIpuUGFYPGvc+L9vh/ATI4B6GEIHX69Eg==", "dev": true, "requires": { - "async-exit-hook": "^1.1.2", - "babel-core": "^6.22.1", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-for-of-as-array": "^1.1.1", - "babel-plugin-transform-runtime": "^6.22.0", - "babel-preset-env": "^1.1.8", - "babel-preset-flow": "^6.23.0", - "babel-preset-stage-2": "^6.22.0", - "babel-runtime": "^6.22.0", - "bin-v8-flags-filter": "^1.1.2", - "callsite": "^1.0.0", - "callsite-record": "^4.0.0", - "chai": "^3.0.0", - "chalk": "^1.1.0", - "chrome-emulated-devices-list": "^0.1.0", - "chrome-remote-interface": "^0.25.3", - "coffeescript": "^2.3.1", - "commander": "^2.8.1", - "debug": "^2.2.0", - "dedent": "^0.4.0", - "del": "^3.0.0", - "elegant-spinner": "^1.0.1", - "endpoint-utils": "^1.0.2", - "error-stack-parser": "^1.3.6", - "globby": "^3.0.1", - "graceful-fs": "^4.1.11", - "gulp-data": "^1.3.1", - "indent-string": "^1.2.2", - "is-ci": "^1.0.10", - "is-glob": "^2.0.1", - "lodash": "^4.17.10", - "log-update-async-hook": "^2.0.2", - "map-reverse": "^1.0.1", - "mkdirp": "^0.5.1", - "moment": "^2.10.3", - "moment-duration-format": "^2.2.2", - "mustache": "^2.1.2", - "nanoid": "^1.0.1", - "node-version": "^1.0.0", - "os-family": "^1.0.0", - "parse5": "^1.5.0", - "pify": "^2.3.0", - "pinkie": "^2.0.4", - "pngjs": "^3.3.1", - "promisify-event": "^1.0.0", - "ps-node": "^0.1.6", - "qrcode-terminal": "^0.10.0", - "read-file-relative": "^1.2.0", - "replicator": "^1.0.0", - "resolve-cwd": "^1.0.0", - "resolve-from": "^4.0.0", - "sanitize-filename": "^1.6.0", - "source-map-support": "^0.5.5", - "strip-bom": "^2.0.0", + "async-exit-hook": "1.1.2", + "babel-core": "6.26.3", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-for-of-as-array": "1.1.1", + "babel-plugin-transform-runtime": "6.23.0", + "babel-preset-env": "1.7.0", + "babel-preset-flow": "6.23.0", + "babel-preset-stage-2": "6.24.1", + "babel-runtime": "6.26.0", + "bin-v8-flags-filter": "1.1.3", + "callsite": "1.0.0", + "callsite-record": "4.1.3", + "chai": "3.5.0", + "chalk": "1.1.3", + "chrome-emulated-devices-list": "0.1.1", + "chrome-remote-interface": "0.25.7", + "coffeescript": "2.3.2", + "commander": "2.19.0", + "debug": "2.6.9", + "dedent": "0.4.0", + "del": "3.0.0", + "elegant-spinner": "1.0.1", + "endpoint-utils": "1.0.2", + "error-stack-parser": "1.3.6", + "globby": "3.0.1", + "graceful-fs": "4.1.11", + "gulp-data": "1.3.1", + "indent-string": "1.2.2", + "is-ci": "1.2.1", + "is-glob": "2.0.1", + "lodash": "4.17.11", + "log-update-async-hook": "2.0.2", + "map-reverse": "1.0.1", + "mkdirp": "0.5.1", + "moment": "2.22.2", + "moment-duration-format": "2.2.2", + "mustache": "2.3.2", + "nanoid": "1.3.0", + "node-version": "1.2.0", + "os-family": "1.0.0", + "parse5": "1.5.1", + "pify": "2.3.0", + "pinkie": "2.0.4", + "pngjs": "3.3.3", + "promisify-event": "1.0.0", + "ps-node": "0.1.6", + "qrcode-terminal": "0.10.0", + "read-file-relative": "1.2.0", + "replicator": "1.0.2", + "resolve-cwd": "1.0.0", + "resolve-from": "4.0.0", + "sanitize-filename": "1.6.1", + "source-map-support": "0.5.9", + "strip-bom": "2.0.0", "testcafe-browser-tools": "1.6.5", "testcafe-hammerhead": "14.2.6", "testcafe-legacy-api": "3.1.8", - "testcafe-reporter-json": "^2.1.0", - "testcafe-reporter-list": "^2.1.0", - "testcafe-reporter-minimal": "^2.1.0", - "testcafe-reporter-spec": "^2.1.1", - "testcafe-reporter-xunit": "^2.1.0", - "time-limit-promise": "^1.0.2", + "testcafe-reporter-json": "2.1.0", + "testcafe-reporter-list": "2.1.0", + "testcafe-reporter-minimal": "2.1.0", + "testcafe-reporter-spec": "2.1.1", + "testcafe-reporter-xunit": "2.1.0", + "time-limit-promise": "1.0.4", "tmp": "0.0.28", - "tree-kill": "^1.1.0", - "typescript": "^2.2.2", - "useragent": "^2.1.7" + "tree-kill": "1.2.0", + "typescript": "2.9.2", + "useragent": "2.3.0" }, "dependencies": { "babel-core": { @@ -11324,25 +11324,25 @@ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.6.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.11", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" } }, "babel-preset-stage-2": { @@ -11351,10 +11351,10 @@ "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-decorators": "^6.24.1", - "babel-preset-stage-3": "^6.24.1" + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-decorators": "6.24.1", + "babel-preset-stage-3": "6.24.1" } }, "commander": { @@ -11369,12 +11369,12 @@ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "dev": true, "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.5.4" }, "dependencies": { "globby": { @@ -11383,11 +11383,11 @@ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "array-union": "1.0.2", + "glob": "7.1.3", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" }, "dependencies": { "pify": { @@ -11412,12 +11412,12 @@ "integrity": "sha1-IJSvhCHhkVIVDViT62QWsxLZoi8=", "dev": true, "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^5.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^1.0.0" + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "5.0.15", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "1.0.0" }, "dependencies": { "glob": { @@ -11426,11 +11426,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "pinkie": { @@ -11445,7 +11445,7 @@ "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", "dev": true, "requires": { - "pinkie": "^1.0.0" + "pinkie": "1.0.0" } } } @@ -11456,9 +11456,9 @@ "integrity": "sha1-25m8xYPrarux5I3LsZmamGBBy2s=", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "minimist": "^1.1.0", - "repeating": "^1.1.0" + "get-stdin": "4.0.1", + "minimist": "1.2.0", + "repeating": "1.1.3" } }, "is-extglob": { @@ -11473,7 +11473,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "lodash": { @@ -11494,7 +11494,7 @@ "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", "dev": true, "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "resolve-cwd": { @@ -11503,7 +11503,7 @@ "integrity": "sha1-Tq7qQe0EDRcCRX32SkKysH0kb58=", "dev": true, "requires": { - "resolve-from": "^2.0.0" + "resolve-from": "2.0.0" }, "dependencies": { "resolve-from": { @@ -11526,8 +11526,8 @@ "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "buffer-from": "1.1.1", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -11546,17 +11546,17 @@ "integrity": "sha512-VsdAxRCRo7pSUYUNO0fw6uX8w84ooOhg8ZMAUBmMkTU9xOYBKpJF/Kvh40fBs2tOB4r/q8yPYnT/Y8z8HsekcA==", "dev": true, "requires": { - "array-find": "^1.0.0", - "babel-runtime": "^5.6.15", - "graceful-fs": "^4.1.11", - "linux-platform-info": "^0.0.3", - "mkdirp": "^0.5.1", - "mustache": "^2.1.2", - "os-family": "^1.0.0", - "pify": "^2.3.0", - "pinkie": "^2.0.1", - "read-file-relative": "^1.2.0", - "which-promise": "^1.0.0" + "array-find": "1.0.0", + "babel-runtime": "5.8.38", + "graceful-fs": "4.1.11", + "linux-platform-info": "0.0.3", + "mkdirp": "0.5.1", + "mustache": "2.3.2", + "os-family": "1.0.0", + "pify": "2.3.0", + "pinkie": "2.0.4", + "read-file-relative": "1.2.0", + "which-promise": "1.0.0" }, "dependencies": { "babel-runtime": { @@ -11565,7 +11565,7 @@ "integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=", "dev": true, "requires": { - "core-js": "^1.0.0" + "core-js": "1.2.7" } }, "core-js": { @@ -11583,28 +11583,28 @@ "dev": true, "requires": { "bowser": "1.6.0", - "brotli": "^1.3.1", - "crypto-md5": "^1.0.0", + "brotli": "1.3.2", + "crypto-md5": "1.0.0", "css": "2.2.3", - "gulp-clone": "^2.0.1", + "gulp-clone": "2.0.1", "gulp-run-command": "0.0.9", "iconv-lite": "0.4.11", "lodash": "4.17.10", "lru-cache": "2.6.3", "match-url-wildcard": "0.0.2", - "merge-stream": "^1.0.1", - "mime": "~1.4.1", - "mustache": "^2.1.1", - "nanoid": "^0.2.2", - "os-family": "^1.0.0", - "parse5": "^1.5.0", - "pify": "^2.3.0", + "merge-stream": "1.0.1", + "mime": "1.4.1", + "mustache": "2.3.2", + "nanoid": "0.2.2", + "os-family": "1.0.0", + "parse5": "1.5.1", + "pify": "2.3.0", "pinkie": "1.0.0", - "read-file-relative": "^1.2.0", + "read-file-relative": "1.2.0", "semver": "5.5.0", "tough-cookie": "2.3.3", "tunnel-agent": "0.6.0", - "webauth": "^1.1.0", + "webauth": "1.1.0", "yakaa": "1.0.1" }, "dependencies": { @@ -11659,17 +11659,17 @@ "dev": true, "requires": { "async": "0.2.6", - "babel-runtime": "^5.8.34", - "dedent": "^0.6.0", - "highlight-es": "^1.0.0", - "lodash": "^4.14.0", - "moment": "^2.14.1", - "mustache": "^2.2.1", - "os-family": "^1.0.0", - "parse5": "^2.1.5", - "pify": "^2.3.0", - "pinkie": "^2.0.1", - "strip-bom": "^2.0.0" + "babel-runtime": "5.8.38", + "dedent": "0.6.0", + "highlight-es": "1.0.3", + "lodash": "4.14.1", + "moment": "2.22.2", + "mustache": "2.3.2", + "os-family": "1.0.0", + "parse5": "2.2.3", + "pify": "2.3.0", + "pinkie": "2.0.4", + "strip-bom": "2.0.0" }, "dependencies": { "async": { @@ -11684,7 +11684,7 @@ "integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=", "dev": true, "requires": { - "core-js": "^1.0.0" + "core-js": "1.2.7" } }, "core-js": { @@ -11755,8 +11755,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "readable-stream": "2.3.6", + "xtend": "4.0.1" } }, "thunky": { @@ -11897,7 +11897,7 @@ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "tree-kill": { @@ -11924,7 +11924,7 @@ "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", "dev": true, "requires": { - "utf8-byte-length": "^1.0.1" + "utf8-byte-length": "1.0.4" } }, "tty-browserify": { @@ -11939,7 +11939,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "type-check": { @@ -13428,9 +13428,9 @@ "integrity": "sha1-ILch3wWzW3Bhdv+hCwkJq6RgMDU=", "dev": true, "requires": { - "pify": "^2.2.0", - "pinkie-promise": "^1.0.0", - "which": "^1.1.2" + "pify": "2.3.0", + "pinkie-promise": "1.0.0", + "which": "1.3.1" }, "dependencies": { "pinkie": { @@ -13445,7 +13445,7 @@ "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=", "dev": true, "requires": { - "pinkie": "^1.0.0" + "pinkie": "1.0.0" } } } diff --git a/tests/intro.test.js b/tests/intro.test.js new file mode 100644 index 0000000..7e4f905 --- /dev/null +++ b/tests/intro.test.js @@ -0,0 +1,65 @@ +// @ts-check + +import { Selector } from 'testcafe' + +fixture('Bouvet NORD - FGM TestCafe') + .page('https://codepen.io/bovan/full/BqOLbX') + + +// test('CSS selectors', async t => { +// let iframe = Selector('iframe#result'); + +// await t +// .switchToIframe(iframe) +// .wait(2000) +// .click("label[for='cb3']") +// .wait(2000); +// }) + + +// test('withAttribute og chaining', async t => { +// let iframe = Selector('iframe#result'); +// let li = Selector('.tg-list-item'); + +// await t +// .switchToIframe(iframe) +// .wait(2000) +// .click(li.child("label").withAttribute('data-tg-off', 'Nope')) +// .wait(2000); +// }) + + +// test('count & exists', async t => { +// let iframe = Selector('iframe#result'); +// let li = Selector('.tg-list-item'); + +// await t +// .switchToIframe(iframe) +// .wait(2000) +// .expect(li.count).eql(5) +// .expect(li.child("label").withAttribute('data-tg-off', 'Nope').exists).ok() +// .wait(2000); +// }) + + + +/** + * Andre ting som kan være kjekt å vite om: + * + + Nyttige funksjoner: +- t.hover(element); +- t.pressKey("backspace enter") +- t.typeText(input, "google this") +- t.resizeWindow(width/height) +- t.takeScreenshot([ path for fil ]) +- t.debug() + +Assertions: +- Deep Equals: .eql() / .notEql() +- Boolean sjekk: .ok() / .notOk() +- Contains: .contains() / .notContains() +- TypeSjekk: .typeOf() / .notTypeOf() +- Tallsammenligning: .gt() / .gte() / lt() / lte() + +*/ \ No newline at end of file diff --git a/tests/todo-1-create.test.js b/tests/todo-1-create.test.js new file mode 100644 index 0000000..ebde666 --- /dev/null +++ b/tests/todo-1-create.test.js @@ -0,0 +1,26 @@ +import { Selector } from 'testcafe' + +fixture('Test TodoMVC App') + .page('http://localhost:8080') + +// hvis problemer, bruk følgende i stedet +// .page('http://todomvc.com/examples/vanillajs/') + + +// Test å lage en todo +// Hint: +// - inputfelt har klassen "new-todo" +// - todo-items ligger i klassen "todo-list" som
+// - bruk actions som typeText() og pressKey() +test('Create todo', async t => { + // == Skriv test her == + const input = Selector(/* Selector */); + const todoItems = Selector(/* liste items */); + + await t + // kjør actions her + + await t + .expect(todoItems.count) + .eql(1) +}) diff --git a/tests/todo-2-edit.test.js b/tests/todo-2-edit.test.js new file mode 100644 index 0000000..e529282 --- /dev/null +++ b/tests/todo-2-edit.test.js @@ -0,0 +1,29 @@ +import { Selector } from 'testcafe' + +fixture('Test TodoMVC App') + .page('http://localhost:8080') + +// hvis problemer, bruk følgende i stedet +// .page('http://todomvc.com/examples/vanillajs/') + + +// Test å redigere en todo ved å velge første todo +// Hint: +// - Dobbelklikk på rett element for å starte redigeringsmodus +// - pressKey kan kjøre flere tastetrykk "backspace left right" +test('Edit todo', async t => { + const firstTodoItem = Selector('.todo-list li:nth-child(1)'); + const input = Selector('.new-todo'); + + await t + .typeText(input, 'Jeg liker mandager') + .pressKey('enter'); + + await t + // == Skriv actions for å endre tekst her == + + await t + .expect(firstTodoItem.textContent) + .contains('Jeg liker fredager'); +}) + diff --git a/tests/todo-3-delete.test.js b/tests/todo-3-delete.test.js new file mode 100644 index 0000000..ce0e9d9 --- /dev/null +++ b/tests/todo-3-delete.test.js @@ -0,0 +1,39 @@ +import { Selector } from 'testcafe' + +fixture('Test TodoMVC App') + .page('http://localhost:8080') + +// hvis problemer, bruk følgende i stedet +// .page('http://todomvc.com/examples/vanillajs/') + + +// Test å slette en Todo +// Hint: +// - Du må finne selector for Slette-ikonet for å kunne klikke på det +// - Du kan ikke klikke på elementer som ikke er synlige +test('Delete todo', async t => { + const input = Selector('.new-todo'); + const todoItems = Selector('.todo-list li'); + const firstTodoItem = Selector('.todo-list li:nth-child(1)') + await t + .typeText(input, 'Klem en vill tiger') + .pressKey('enter') + + .typeText(input, 'Klem en hund') + .pressKey('enter') + + await t + .expect(todoItems.count) + .eql(2) + + await t + // == Skriv test her == + + await t + .expect(todoItems.count) + .eql(1) + + await t + .expect(firstTodoItem.textContent) + .contains('Klem en hund') +}) diff --git a/tests/todo-4-complete.test.js b/tests/todo-4-complete.test.js new file mode 100644 index 0000000..0fec559 --- /dev/null +++ b/tests/todo-4-complete.test.js @@ -0,0 +1,44 @@ +import { Selector } from 'testcafe' + +fixture('Test TodoMVC App') + .page('http://localhost:8080') + +// hvis problemer, bruk følgende i stedet +// .page('http://todomvc.com/examples/vanillajs/') + + +const input = Selector('.new-todo') + +// Gjennomfør 1 Todo og skriv en test som verifiserer at Todo er streket over +// Hint: +// - Du må finne og klikke på elementet som toggler +// - Testen vil kunne skrives som t.expect(