Refaktorert tester før workshop

- Gått igjennom og sett at de faktisk fungerer
This commit is contained in:
Børge Antonsen 2018-10-23 01:06:20 +02:00
parent 31bba805dd
commit 67b67a7b96
7 changed files with 466 additions and 368 deletions

526
package-lock.json generated
View File

@ -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"
}
}
}

65
tests/intro.test.js Normal file
View File

@ -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()
*/

View File

@ -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 <li/>
// - 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)
})

29
tests/todo-2-edit.test.js Normal file
View File

@ -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');
})

View File

@ -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')
})

View File

@ -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(<test>).ok()
test('Complete one todo', async t => {
await t
.typeText(input, 'Lær javascript')
.pressKey('enter')
.typeText(input, 'Avinstaller ICQ')
.pressKey('enter')
// == Skriv test-kode her her ==
// == Skriv assertions her ==
})
// Test at Active/Completed visning fungerer
// Hint:
// - Du kan sette 1 Todo til aktive og en til fullfør først
test('Show active/completed todos', async t => {
await t
.typeText(input, 'Lær javascript')
.pressKey('enter')
.typeText(input, 'Avinstaller ICQ')
.pressKey('enter')
// == Skriv test-kode her her ==
// == Skriv assertions her ==
})

View File

@ -1,105 +0,0 @@
import { Selector, test } from 'testcafe'
class TodoPage {
constructor() {
this.input = Selector('.new-todo')
this.editInput = Selector('.edit')
this.todoItems = Selector('.todo-list li')
this.firstTodoItem = Selector('.todo-list li:nth-child(1)')
this.completedTodos = Selector('.completed')
this.completeAll = Selector('.toggle-all')
this.deleteCompleted = Selector('.clear-completed')
this.showActiveLink = Selector('[href="#/active"]')
this.showCompletedLink = Selector('[href="#/completed"]')
}
}
const todoPage = new TodoPage()
// fixture('Test TodoMVC App')
// .page('http://todomvc.com/examples/vanillajs/')
// Test å lage en todo
// Hint:
// - todoPage.input er feltet du skriver inn i
// - todoPage.todoItems er listen over todos
test('Create todo', async t => {
// == Skriv test her ==
await t
.expect(todoPage.firstTodoItem.textContent)
.contains('Dette er min første todo!')
})
// Test å redigere en todo ved å velge første todo
// Hint:
// - Gjennomfør operasjonen med tast og museklikk først
test('Edit todo', async t => {
await t
.typeText(todoPage.input, 'Jeg liker mandager')
.pressKey('enter')
// == Skriv test her ==
await t
.expect(todoPage.firstTodoItem.textContent)
.contains('Jeg liker fredager')
})
// Test å slette en Todo
// Hint:
// - Du må finne selector for Slette-ikonet for å kunne klikke på det
test('Delete todo', async t => {
await t
.typeText(todoPage.input, 'Klem en sau')
.pressKey('enter')
.typeText(todoPage.input, 'Klem en tiger')
.pressKey('enter')
await t
.expect(todoPage.todoItems.count)
.eql(2)
// == Skriv test her ==
await t
.expect(todoPage.todoItems.count)
.eql(1)
await t
.expect(todoPage.firstTodoItem.textContent)
.contains('Klem en tiger')
})
// 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(<test>).ok()
test('Complete one todo', async t => {
await t
.typeText(todoPage.input, 'Lær javascript')
.pressKey('enter')
.typeText(todoPage.input, 'Avinstaller ICQ')
.pressKey('enter')
// == Skriv test her ==
})
// Test at Active/Completed visning fungerer
// Hint:
// - Du kan sette 1 Todo til aktive og en til fullfør først
test('Show active/completed todos', async t => {
await t
.typeText(todoPage.input, 'Lær javascript')
.pressKey('enter')
.typeText(todoPage.input, 'Avinstaller ICQ')
.pressKey('enter')
// == Skriv test her ==
})