From 1fb206daa42d8d1ef1fa08c4f0c5bd6c2ab6bc52 Mon Sep 17 00:00:00 2001 From: Helmut Januschka Date: Mon, 28 May 2018 10:56:46 +0200 Subject: [PATCH 1/9] add missing dependency --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 2697484c4..de37ff004 100644 --- a/package.json +++ b/package.json @@ -157,6 +157,7 @@ "node-emoji": "^1.8.1", "node-fetch": "^1.7.2", "nodemailer": "^2.6.4", + "nunjucks": "^3.1.3", "npm-run-all": "^4.1.2", "parallel-webpack": "^2.2.0", "passport": "^0.4.0", From 657736593068ed0c41311313faf6800db064bd18 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Mon, 28 May 2018 16:19:56 +0200 Subject: [PATCH 2/9] Use standard buttons to fix IOS bug --- client/coral-framework/styles/reset.css | 1 + client/coral-ui/components/BareButton.js | 25 +++++++++++++------- client/coral-ui/components/Dropdown.css | 30 ++++++++++-------------- client/coral-ui/components/Dropdown.js | 24 ++++--------------- client/coral-ui/components/Option.css | 2 ++ client/coral-ui/components/Option.js | 25 +++++++++++--------- 6 files changed, 51 insertions(+), 56 deletions(-) diff --git a/client/coral-framework/styles/reset.css b/client/coral-framework/styles/reset.css index 8cfd14c41..0a7ddb46b 100644 --- a/client/coral-framework/styles/reset.css +++ b/client/coral-framework/styles/reset.css @@ -6,6 +6,7 @@ border: none; touch-action: manipulation; padding: 0; + margin: 0; overflow: hidden; diff --git a/client/coral-ui/components/BareButton.js b/client/coral-ui/components/BareButton.js index 6d3f9fa93..911d76297 100644 --- a/client/coral-ui/components/BareButton.js +++ b/client/coral-ui/components/BareButton.js @@ -7,17 +7,26 @@ import cn from 'classnames'; * BareButton is a button whose styling is stripped off to a minimum. * Can pass anchor=true to use `a` instead of `button` */ -const BareButton = ({ anchor, className, ...props }) => { - let Element = 'button'; - if (anchor) { - Element = 'a'; +export default class BareButton extends React.Component { + ref = null; + + handleRef = ref => (this.ref = ref); + focus = () => this.ref.focus(); + + render() { + const { anchor, className, ...props } = this.props; + const Element = anchor ? 'a' : 'button'; + return ( + + ); } - return ; -}; +} BareButton.propTypes = { className: PropTypes.string, anchor: PropTypes.bool, }; - -export default BareButton; diff --git a/client/coral-ui/components/Dropdown.css b/client/coral-ui/components/Dropdown.css index c17e6322a..3128a8be4 100644 --- a/client/coral-ui/components/Dropdown.css +++ b/client/coral-ui/components/Dropdown.css @@ -1,32 +1,26 @@ .dropdown { position: relative; - height: 34px; - background: #2c2c2c; - box-sizing: border-box; - color: white; - border-radius: 3px; - box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12); - line-height: 20px; - - font-size: 0.98em; - border-radius: 3px; - cursor: pointer; - - &.disabled { - color: #e5e5e5; - background: #888; - cursor: default; - pointer-events: none; - } } .toggle { padding: 8px 45px 8px 15px; outline: none; + color: white; + background: #2c2c2c; + border-radius: 3px; + height: 34px; + box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12); + line-height: 20px; + font-size: 0.98em; &:focus { background: #888; } + + &:disabled { + color: #e5e5e5; + background: #888; + } } .toggleOpen { diff --git a/client/coral-ui/components/Dropdown.js b/client/coral-ui/components/Dropdown.js index bf885477f..380d6c91f 100644 --- a/client/coral-ui/components/Dropdown.js +++ b/client/coral-ui/components/Dropdown.js @@ -4,6 +4,7 @@ import styles from './Dropdown.css'; import Icon from './Icon'; import cn from 'classnames'; import ClickOutside from 'coral-framework/components/ClickOutside'; +import { BareButton } from 'coral-ui'; class Dropdown extends React.Component { toggleRef = null; @@ -88,16 +89,6 @@ class Dropdown extends React.Component { this.toggle(); }; - handleKeyDown = e => { - const code = e.which; - - // 13 = Return, 32 = Space - if (code === 13 || code === 32) { - e.preventDefault(); - this.toggle(); - } - }; - hideMenu = () => { this.setState({ isOpen: false, @@ -155,23 +146,18 @@ class Dropdown extends React.Component { styles.dropdown, className, containerClassName, - 'dd dd-container', - { - [styles.disabled]: disabled, - } + 'dd dd-container' )} > -
{this.props.icon && (
+ {this.state.isOpen && (
diff --git a/client/coral-ui/components/Option.css b/client/coral-ui/components/Option.css index 892bc4e7c..eb76df93d 100644 --- a/client/coral-ui/components/Option.css +++ b/client/coral-ui/components/Option.css @@ -1,7 +1,9 @@ .option { + width: 100%; padding: 10px; outline: none; white-space: nowrap; + text-align: left; &:focus, &:hover { background-color: #ccc; diff --git a/client/coral-ui/components/Option.js b/client/coral-ui/components/Option.js index 704bca179..95473d4c6 100644 --- a/client/coral-ui/components/Option.js +++ b/client/coral-ui/components/Option.js @@ -1,13 +1,15 @@ import React from 'react'; +import { findDOMNode } from 'react-dom'; import PropTypes from 'prop-types'; import styles from './Option.css'; import cn from 'classnames'; +import { BareButton } from 'coral-ui'; class Option extends React.Component { ref = null; handleRef = ref => { - this.ref = ref; + this.ref = findDOMNode(ref); }; focus = () => { @@ -19,16 +21,17 @@ class Option extends React.Component { const { className, label = '', onClick, onKeyDown } = this.props; const id = this.props.id ? this.props.id : this.props.value; return ( -
  • - {label} +
  • + + {label} +
  • ); } From ed679096c84f2437ee5fc9b25c9850020eccc441 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Mon, 28 May 2018 17:16:44 +0200 Subject: [PATCH 3/9] Workaround RTE Button focus bug on IOS --- .../client/components/rte/factories/createToggle.js | 11 ----------- .../client/components/rte/lib/api.js | 11 ++++++++++- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/plugins/talk-plugin-rich-text/client/components/rte/factories/createToggle.js b/plugins/talk-plugin-rich-text/client/components/rte/factories/createToggle.js index 59b75fdf2..1fe8641f6 100644 --- a/plugins/talk-plugin-rich-text/client/components/rte/factories/createToggle.js +++ b/plugins/talk-plugin-rich-text/client/components/rte/factories/createToggle.js @@ -1,7 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import Button from '../components/Button'; -import bowser from 'bowser'; /** * createToggle creates a button that can be active, inactive or disabled @@ -33,17 +32,7 @@ const createToggle = ( this.execCommand(); }; - // Detect whether there was focus on the RTE before the click. - hadFocusBeforeClick = false; - handleMouseDown = () => (this.hadFocusBeforeClick = this.props.api.focused); - handleClick = () => { - // Skip IOS when the focus was not there before. - // IOS fails to focus to the RTE correctly and scrolls to nirvana. - // See https://www.pivotaltracker.com/story/show/157607216 - if (!this.hadFocusBeforeClick && bowser.ios) { - return; - } this.props.api.focus(); this.formatToggle(); this.props.api.focus(); diff --git a/plugins/talk-plugin-rich-text/client/components/rte/lib/api.js b/plugins/talk-plugin-rich-text/client/components/rte/lib/api.js index 9e018f093..0c5fbcf2f 100644 --- a/plugins/talk-plugin-rich-text/client/components/rte/lib/api.js +++ b/plugins/talk-plugin-rich-text/client/components/rte/lib/api.js @@ -1,4 +1,4 @@ -import { isSelectionInside } from './dom'; +import { isSelectionInside, selectEndOfNode } from '../lib/dom'; /** * An instance of API is passed to all the buttons to @@ -26,6 +26,15 @@ function createAPI( return getContainer(); }, focus() { + // IOS workaround inspired by https://github.com/facebook/draft-js/issues/1075#issuecomment-369700275. + // Putting the selection inside the contentEditable before calling `focus` + // prevents an undesired scroll jump. + if (!isSelectionInside(this.container)) { + if (this.container.childNodes.length === 0) { + this.container.appendChild(document.createTextNode('')); + } + selectEndOfNode(this.container); + } this.container.focus(); }, isSelectionInside() { From da820ad6db73811b2cdb52e15fc04414b4d36f91 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Mon, 28 May 2018 09:42:22 -0600 Subject: [PATCH 4/9] updated yarn.lock --- yarn.lock | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index a65a3524d..59b3958d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1977,6 +1977,24 @@ chokidar@^1.5.2, chokidar@^1.6.0, chokidar@^1.6.1, chokidar@^1.7.0: optionalDependencies: fsevents "^1.0.0" +chokidar@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.1.2" + chokidar@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7" @@ -2834,7 +2852,7 @@ debug@*, debug@3.1.0, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0: dependencies: ms "2.0.0" -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: +debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -4106,6 +4124,12 @@ fs-extra@^4.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + fs-promise@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-0.3.1.tgz#bf34050368f24d6dc9dfc6688ab5cead8f86842a" @@ -4136,6 +4160,13 @@ fsevents@^1.0.0, fsevents@^1.1.1: nan "^2.3.0" node-pre-gyp "^0.6.39" +fsevents@^1.1.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + fstream-ignore@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" @@ -5019,6 +5050,12 @@ iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" +iconv-lite@^0.4.4: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" @@ -5051,6 +5088,12 @@ ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + ignore@^3.3.3, ignore@^3.3.5: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" @@ -7359,6 +7402,19 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" @@ -7566,6 +7622,10 @@ nan@^2.3.2: version "2.9.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" +nan@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + nanomatch@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" @@ -7620,6 +7680,14 @@ nearley@^2.7.10: railroad-diagrams "^1.0.0" randexp "^0.4.2" +needle@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -7759,6 +7827,21 @@ node-notifier@^5.2.1: shellwords "^0.1.1" which "^1.3.0" +node-pre-gyp@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + node-pre-gyp@^0.6.39: version "0.6.39" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" @@ -7965,6 +8048,17 @@ normalize-url@~2.0.0: query-string "^5.0.1" sort-keys "^2.0.0" +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-path@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" @@ -8033,6 +8127,17 @@ nunjucks@^3.1.2: optionalDependencies: chokidar "^1.6.0" +nunjucks@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.1.3.tgz#9a23c844af01c143a0b40f3bdd1212a9d7877260" + dependencies: + a-sync-waterfall "^1.0.0" + asap "^2.0.3" + postinstall-build "^5.0.1" + yargs "^3.32.0" + optionalDependencies: + chokidar "^2.0.0" + "nwmatcher@>= 1.3.7 < 2.0.0", nwmatcher@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" @@ -10161,6 +10266,10 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + safe-json-stringify@~1: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.1.0.tgz#bd2b6dad1ebafab3c24672a395527f01804b7e19" @@ -10171,6 +10280,10 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + samsam@1.1.2, samsam@~1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" @@ -11145,6 +11258,18 @@ tar@^2.0.0, tar@^2.2.1: fstream "^1.0.2" inherits "2" +tar@^4: + version "4.4.4" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.3.3" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + tcomb@^2.5.1: version "2.7.0" resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0" @@ -12041,6 +12166,10 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + yaml-lint@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/yaml-lint/-/yaml-lint-1.0.0.tgz#655068f583263eec7e2a0ded8f5b1895dd667e1c" From 4299c373bac2faede859bd7c08d4f7ad4c4e21c6 Mon Sep 17 00:00:00 2001 From: okbel Date: Mon, 28 May 2018 15:17:31 -0300 Subject: [PATCH 5/9] changes and updates to the e2e --- nightwatch.conf.js | 6 +- package.json | 2 +- yarn.lock | 250 ++++++++++++++++++++++++++++++++++----------- 3 files changed, 196 insertions(+), 62 deletions(-) diff --git a/nightwatch.conf.js b/nightwatch.conf.js index 75dfa5ef6..16777b844 100644 --- a/nightwatch.conf.js +++ b/nightwatch.conf.js @@ -10,15 +10,15 @@ module.exports = { selenium: { start_process: true, server_path: - 'node_modules/selenium-standalone/.selenium/selenium-server/3.7.1-server.jar', + 'node_modules/selenium-standalone/.selenium/selenium-server/3.8.1-server.jar', log_path: REPORTS_FOLDER, host: '127.0.0.1', port: 6666, cli_args: { 'webdriver.chrome.driver': - 'node_modules/selenium-standalone/.selenium/chromedriver/2.33-x64-chromedriver', + 'node_modules/selenium-standalone/.selenium/chromedriver/2.37-x64-chromedriver', 'webdriver.gecko.driver': - 'node_modules/selenium-standalone/.selenium/geckodriver/0.19.1-x64-geckodriver', + 'node_modules/selenium-standalone/.selenium/geckodriver/0.20.1-x64-geckodriver', }, }, test_settings: { diff --git a/package.json b/package.json index de37ff004..adee3da8d 100644 --- a/package.json +++ b/package.json @@ -157,8 +157,8 @@ "node-emoji": "^1.8.1", "node-fetch": "^1.7.2", "nodemailer": "^2.6.4", - "nunjucks": "^3.1.3", "npm-run-all": "^4.1.2", + "nunjucks": "^3.1.3", "parallel-webpack": "^2.2.0", "passport": "^0.4.0", "passport-jwt": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 59b3958d6..a4cec7ec7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -649,12 +649,18 @@ async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.0.0, async@^2.1.2, async@^2.1.4, async@^2.4.1, async@~2.6.0: +async@^2.0.0, async@^2.1.2, async@^2.4.1, async@~2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: lodash "^4.14.0" +async@^2.1.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + async@~0.2.6: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" @@ -690,7 +696,11 @@ aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.2.1, aws4@^1.6.0: +aws4@^1.2.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" + +aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" @@ -1413,10 +1423,11 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" bl@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" dependencies: - readable-stream "^2.0.5" + readable-stream "^2.3.5" + safe-buffer "^5.1.1" block-stream@*: version "0.0.9" @@ -1648,6 +1659,17 @@ bson@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.6.tgz#444db59ddd4c24f0cb063aabdc5c8c7b0ceca912" +buffer-alloc-unsafe@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz#ffe1f67551dd055737de253337bfe853dfab1a6a" + +buffer-alloc@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.1.0.tgz#05514d33bf1656d3540c684f65b1202e90eca303" + dependencies: + buffer-alloc-unsafe "^0.1.0" + buffer-fill "^0.1.0" + buffer-crc32@^0.2.1, buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -1656,6 +1678,10 @@ buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" +buffer-fill@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.1.tgz#76d825c4d6e50e06b7a31eb520c04d08cc235071" + buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -2235,8 +2261,8 @@ colors@^1.1.2, colors@~1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: delayed-stream "~1.0.0" @@ -2256,7 +2282,7 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.11.0, commander@^2.9.0: +commander@^2.11.0: version "2.12.2" resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" @@ -2264,6 +2290,10 @@ commander@^2.14.1: version "2.14.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" +commander@^2.9.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -2627,6 +2657,16 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -4097,6 +4137,10 @@ from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + fs-extra@^0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.24.0.tgz#d4e4342a96675cb7846633a6099249332b539952" @@ -5465,12 +5509,17 @@ is-ip@1.0.0: dependencies: ip-regex "^1.0.0" +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + is-my-json-valid@^2.12.4: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" + version "2.17.2" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" jsonpointer "^4.0.0" xtend "^4.0.0" @@ -6990,11 +7039,11 @@ lodash.values@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.2.0, lodash@^4.2.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@^4.17.10: +lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.4: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -7352,16 +7401,22 @@ miller-rabin@^4.0.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" -"mime-db@>= 1.33.0 < 2": +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.10, mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7: +mime-types@^2.1.10, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" dependencies: mime-db "~1.30.0" +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + mime@1.4.1, mime@^1.3.4, mime@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" @@ -7702,6 +7757,10 @@ nib@~1.1.2: dependencies: stylus "0.54.5" +nice-try@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + nightwatch@^0.9.16: version "0.9.19" resolved "https://registry.yarnpkg.com/nightwatch/-/nightwatch-0.9.19.tgz#4bd9757273d30b845f04847a98b71be9bb7c4b3b" @@ -8549,7 +8608,7 @@ path-is-inside@^1.0.1, 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" -path-key@^2.0.0: +path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -9778,7 +9837,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.4, readable-stream@^2.1.5, readable-stream@^2.2.2: +"readable-stream@1 || 2", readable-stream@^2.0.4, readable-stream@^2.1.5, readable-stream@^2.2.2: version "2.3.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" dependencies: @@ -9808,7 +9867,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.3.3: +readable-stream@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -9820,6 +9879,18 @@ readable-stream@2, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stre string_decoder "~1.0.3" util-deprecate "~1.0.1" +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.0, readable-stream@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -10050,31 +10121,6 @@ request@2, request@^2.55.0, request@^2.74.0, request@^2.81.0, request@^2.83.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -request@2.79.0, request@~2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - request@2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -10102,6 +10148,56 @@ request@2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" +request@2.87.0: + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + +request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -10262,11 +10358,11 @@ rxjs@^5.4.2: dependencies: symbol-observable "1.0.1" -safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -safe-buffer@^5.1.2: +safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -10367,19 +10463,19 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" selenium-standalone@^6.11.0: - version "6.12.0" - resolved "https://registry.yarnpkg.com/selenium-standalone/-/selenium-standalone-6.12.0.tgz#789730db09a105f1cce12c6424d795d11c543bd4" + version "6.15.0" + resolved "https://registry.yarnpkg.com/selenium-standalone/-/selenium-standalone-6.15.0.tgz#c8dc77bd45154afbda7509ec53dc599809f63ee4" dependencies: async "^2.1.4" commander "^2.9.0" - cross-spawn "^5.1.0" + cross-spawn "^6.0.0" debug "^3.0.0" lodash "^4.17.4" minimist "^1.2.0" mkdirp "^0.5.1" progress "2.0.0" - request "2.79.0" - tar-stream "1.5.2" + request "2.87.0" + tar-stream "1.6.1" urijs "^1.18.4" which "^1.2.12" yauzl "^2.5.0" @@ -10394,7 +10490,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -10838,8 +10934,8 @@ srcset@^1.0.0: number-is-nan "^1.0.0" sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + version "1.14.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -10992,6 +11088,12 @@ string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" @@ -11000,7 +11102,11 @@ stringify-object@^3.2.2: is-obj "^1.0.1" is-regexp "^1.0.0" -stringstream@~0.0.4, stringstream@~0.0.5: +stringstream@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" + +stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -11232,7 +11338,19 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" -tar-stream@1.5.2, tar-stream@^1.1.2: +tar-stream@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" + dependencies: + bl "^1.0.0" + buffer-alloc "^1.1.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.0" + xtend "^4.0.0" + +tar-stream@^1.1.2: version "1.5.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" dependencies: @@ -11391,6 +11509,10 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" +to-buffer@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + to-capital-case@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/to-capital-case/-/to-capital-case-1.0.0.tgz#a57c5014fd5a37217cf05099ff8a421bbf9c9b7f" @@ -11473,12 +11595,18 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@>=2.3.3, tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.2.0, tough-cookie@^2.3.3, tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + tr46@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -11742,8 +11870,8 @@ upper-case@^1.1.1: resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" urijs@^1.18.4: - version "1.19.0" - resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.0.tgz#d8aa284d0e7469703a6988ad045c4cbfdf08ada0" + version "1.19.1" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.1.tgz#5b0ff530c0cbde8386f6342235ba5ca6e995d25a" urix@^0.1.0: version "0.1.0" @@ -12008,12 +12136,18 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@1, which@^1.2.10, which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" +which@^1.2.12: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" From b15a306c433beb44f518e209f6e2ca1310889439 Mon Sep 17 00:00:00 2001 From: okbel Date: Mon, 28 May 2018 16:20:20 -0300 Subject: [PATCH 6/9] =?UTF-8?q?=C3=A7hanges?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/coral-admin/src/routes/Moderation/graphql.js | 5 +++++ test/e2e/page_objects/popup.js | 4 +++- test/e2e/specs/05_banUser.js | 7 +++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/graphql.js b/client/coral-admin/src/routes/Moderation/graphql.js index 8bb6349d8..31d124d93 100644 --- a/client/coral-admin/src/routes/Moderation/graphql.js +++ b/client/coral-admin/src/routes/Moderation/graphql.js @@ -298,6 +298,11 @@ export function handleCommentChange( notificationShown = true; }; + console.log('root.me', root.me); + console.log('comment.status_history', comment.status_history); + + debugger; + Object.keys(queueConfig).forEach(queue => { // Comment should be placed in queue. if (nextQueues.indexOf(queue) >= 0) { diff --git a/test/e2e/page_objects/popup.js b/test/e2e/page_objects/popup.js index 824546e5b..cb35563f5 100644 --- a/test/e2e/page_objects/popup.js +++ b/test/e2e/page_objects/popup.js @@ -5,7 +5,9 @@ module.exports = { return this.waitForElementVisible('body'); }, login(user) { - return this.setValue('@emailInput', user.email) + return this.waitForElementVisible('@emailInput') + .setValue('@emailInput', user.email) + .waitForElementVisible('@passwordInput') .setValue('@passwordInput', user.password) .waitForElementVisible('@signIn') .waitForElementVisible('@loginButton') diff --git a/test/e2e/specs/05_banUser.js b/test/e2e/specs/05_banUser.js index 51055a180..6a5dfb12c 100644 --- a/test/e2e/specs/05_banUser.js +++ b/test/e2e/specs/05_banUser.js @@ -86,7 +86,7 @@ module.exports = { .waitForElementVisible('@firstRow') .waitForElementVisible('@dropdownStatus') .click('@dropdownStatus') - .waitForElementVisible('@dropdownStatusActive') + .waitForElementVisible('@optionRemoveBan') .click('@optionRemoveBan'); }, 'admin logs out 2': client => { @@ -154,8 +154,7 @@ module.exports = { const moderate = client.page.admin().section.moderate; moderate.click('@firstCommentApprove'); - - // TODO: check why this fails. - // .waitForElementNotPresent('@firstComment'); + client.pause(1000000); + moderate.waitForElementNotPresent('@firstComment'); }, }; From 3a84da94958d70e2df2e8fb6c30cc16310e35099 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Tue, 29 May 2018 16:42:04 +0200 Subject: [PATCH 7/9] Activate Websocket and add browser console logging --- bin/cli-assets | 2 +- bin/cli-token | 2 +- bin/cli-users | 2 +- .../src/routes/Moderation/graphql.js | 5 --- package.json | 2 +- scripts/e2e.js | 4 +- .../{utils => helpers}/SortedWindowHandler.js | 0 test/e2e/helpers/printBrowserLog.js | 37 +++++++++++++++++++ test/e2e/page_objects/embedStream.js | 2 +- test/e2e/specs/01_install.js | 5 ++- test/e2e/specs/02_admin.js | 5 ++- test/e2e/specs/03_embedStream.js | 4 +- test/e2e/specs/04_userStatus.js | 5 ++- test/e2e/specs/05_banUser.js | 10 +++-- test/e2e/specs/06_suspendUser.js | 4 +- yarn.lock | 17 ++++++--- 16 files changed, 80 insertions(+), 26 deletions(-) rename test/e2e/{utils => helpers}/SortedWindowHandler.js (100%) create mode 100644 test/e2e/helpers/printBrowserLog.js diff --git a/bin/cli-assets b/bin/cli-assets index 5c1afb741..8242a02d6 100755 --- a/bin/cli-assets +++ b/bin/cli-assets @@ -7,7 +7,7 @@ const util = require('./util'); const program = require('commander'); const parseDuration = require('ms'); -const Table = require('cli-table'); +const Table = require('cli-table2'); const AssetModel = require('../models/asset'); const CommentModel = require('../models/comment'); const AssetsService = require('../services/assets'); diff --git a/bin/cli-token b/bin/cli-token index b131728e6..0d4dc4e10 100755 --- a/bin/cli-token +++ b/bin/cli-token @@ -8,7 +8,7 @@ const util = require('./util'); const program = require('commander'); const mongoose = require('../services/mongoose'); const TokensService = require('../services/tokens'); -const Table = require('cli-table'); +const Table = require('cli-table2'); // Register the shutdown criteria. util.onshutdown([() => mongoose.disconnect()]); diff --git a/bin/cli-users b/bin/cli-users index bf34cce97..743119a0a 100755 --- a/bin/cli-users +++ b/bin/cli-users @@ -8,7 +8,7 @@ const util = require('./util'); const program = require('commander'); const inquirer = require('inquirer'); const { stripIndent } = require('common-tags'); -const Table = require('cli-table'); +const Table = require('cli-table2'); // Make things colorful! require('colors'); diff --git a/client/coral-admin/src/routes/Moderation/graphql.js b/client/coral-admin/src/routes/Moderation/graphql.js index 31d124d93..8bb6349d8 100644 --- a/client/coral-admin/src/routes/Moderation/graphql.js +++ b/client/coral-admin/src/routes/Moderation/graphql.js @@ -298,11 +298,6 @@ export function handleCommentChange( notificationShown = true; }; - console.log('root.me', root.me); - console.log('comment.status_history', comment.status_history); - - debugger; - Object.keys(queueConfig).forEach(queue => { // Comment should be placed in queue. if (nextQueues.indexOf(queue) >= 0) { diff --git a/package.json b/package.json index adee3da8d..a313c1ec0 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "brotli-webpack-plugin": "^0.5.0", "bunyan": "^1.8.12", "bunyan-debug-stream": "^1.0.8", - "cli-table": "^0.3.1", + "cli-table2": "^0.2.0", "clipboard": "^1.7.1", "colors": "^1.1.2", "commander": "^2.11.0", diff --git a/scripts/e2e.js b/scripts/e2e.js index 37ada228a..d86b3ba47 100755 --- a/scripts/e2e.js +++ b/scripts/e2e.js @@ -5,7 +5,7 @@ process.env['NODE_ENV'] = 'test'; const browserstack = require('browserstack-local'); const { onshutdown, shutdown } = require('../bin/util'); const program = require('commander'); -const Table = require('cli-table'); +const Table = require('cli-table2'); const serve = require('../serve'); const childProcess = require('child_process'); const uuid = require('uuid').v4; @@ -181,7 +181,7 @@ class E2E { console.log('Dropping test database'); await mongoose.connection.dropDatabase(); console.log('Starting the server'); - await serve(); + await serve({ websockets: true }); if (this.browserstackEnabled) { browserstack.localIdentifier = this.localIdentifier; diff --git a/test/e2e/utils/SortedWindowHandler.js b/test/e2e/helpers/SortedWindowHandler.js similarity index 100% rename from test/e2e/utils/SortedWindowHandler.js rename to test/e2e/helpers/SortedWindowHandler.js diff --git a/test/e2e/helpers/printBrowserLog.js b/test/e2e/helpers/printBrowserLog.js new file mode 100644 index 000000000..b40fb4507 --- /dev/null +++ b/test/e2e/helpers/printBrowserLog.js @@ -0,0 +1,37 @@ +// Make things colorful! +require('colors'); + +const Table = require('cli-table2'); + +function getLevelColoried(level) { + switch (level) { + case 'WARNING': + return level.yellow; + case 'SEVERE': + return level.red; + default: + return level; + } +} + +function printBrowserLog(client) { + return new Promise(resolve => { + client.getLog('browser', entries => { + if (entries.length) { + let table = new Table({ + head: ['Level'.cyan, 'Message'.cyan], + wordWrap: true, + colWidths: [10, 80], + }); + + for (let entry of entries) { + table.push([getLevelColoried(entry.level), entry.message]); + } + console.log(table.toString()); + } + resolve(); + }); + }); +} + +module.exports = printBrowserLog; diff --git a/test/e2e/page_objects/embedStream.js b/test/e2e/page_objects/embedStream.js index de3a29973..42dedefba 100644 --- a/test/e2e/page_objects/embedStream.js +++ b/test/e2e/page_objects/embedStream.js @@ -1,5 +1,5 @@ const iframeId = 'coralStreamEmbed_iframe'; -const SortedWindowHandler = require('../utils/SortedWindowHandler'); +const SortedWindowHandler = require('../helpers/SortedWindowHandler'); module.exports = { commands: [ diff --git a/test/e2e/specs/01_install.js b/test/e2e/specs/01_install.js index 75e6a60eb..91f08f7af 100644 --- a/test/e2e/specs/01_install.js +++ b/test/e2e/specs/01_install.js @@ -1,3 +1,5 @@ +const printBrowserLog = require('../helpers/printBrowserLog'); + module.exports = { '@tags': ['install'], @@ -6,7 +8,8 @@ module.exports = { client.resizeWindow(1600, 1200); }, - afterEach: (client, done) => { + afterEach: async (client, done) => { + await printBrowserLog(client); if (client.currentTest.results.failed) { throw new Error('Test Case failed, skipping all the rest'); } diff --git a/test/e2e/specs/02_admin.js b/test/e2e/specs/02_admin.js index 07f5b574c..844e653fe 100644 --- a/test/e2e/specs/02_admin.js +++ b/test/e2e/specs/02_admin.js @@ -1,3 +1,5 @@ +const printBrowserLog = require('../helpers/printBrowserLog'); + module.exports = { '@tags': ['admin', 'login'], @@ -6,7 +8,8 @@ module.exports = { client.resizeWindow(1024, 800); }, - afterEach: (client, done) => { + afterEach: async (client, done) => { + await printBrowserLog(client); if (client.currentTest.results.failed) { throw new Error('Test Case failed, skipping all the rest'); } diff --git a/test/e2e/specs/03_embedStream.js b/test/e2e/specs/03_embedStream.js index 9eca7a736..d98c0f9a7 100644 --- a/test/e2e/specs/03_embedStream.js +++ b/test/e2e/specs/03_embedStream.js @@ -1,3 +1,4 @@ +const printBrowserLog = require('../helpers/printBrowserLog'); const commentBody = 'Embed Stream Test'; module.exports = { @@ -8,7 +9,8 @@ module.exports = { client.resizeWindow(1600, 1200); }, - afterEach: (client, done) => { + afterEach: async (client, done) => { + await printBrowserLog(client); if (client.currentTest.results.failed) { throw new Error('Test Case failed, skipping all the rest'); } diff --git a/test/e2e/specs/04_userStatus.js b/test/e2e/specs/04_userStatus.js index 8d659221d..c54aa308c 100644 --- a/test/e2e/specs/04_userStatus.js +++ b/test/e2e/specs/04_userStatus.js @@ -1,10 +1,13 @@ +const printBrowserLog = require('../helpers/printBrowserLog'); + module.exports = { before: client => { client.setWindowPosition(0, 0); client.resizeWindow(1600, 1200); }, - afterEach: (client, done) => { + afterEach: async (client, done) => { + await printBrowserLog(client); if (client.currentTest.results.failed) { throw new Error('Test Case failed, skipping all the rest'); } diff --git a/test/e2e/specs/05_banUser.js b/test/e2e/specs/05_banUser.js index 6a5dfb12c..3f6a33cf9 100644 --- a/test/e2e/specs/05_banUser.js +++ b/test/e2e/specs/05_banUser.js @@ -1,3 +1,4 @@ +const printBrowserLog = require('../helpers/printBrowserLog'); const commentBody = 'Ban User Test'; module.exports = { @@ -6,7 +7,8 @@ module.exports = { client.resizeWindow(1600, 1200); }, - afterEach: (client, done) => { + afterEach: async (client, done) => { + await printBrowserLog(client); if (client.currentTest.results.failed) { throw new Error('Test Case failed, skipping all the rest'); } @@ -153,8 +155,8 @@ module.exports = { 'approve comment to restore karma': client => { const moderate = client.page.admin().section.moderate; - moderate.click('@firstCommentApprove'); - client.pause(1000000); - moderate.waitForElementNotPresent('@firstComment'); + moderate + .click('@firstCommentApprove') + .waitForElementNotPresent('@firstComment'); }, }; diff --git a/test/e2e/specs/06_suspendUser.js b/test/e2e/specs/06_suspendUser.js index e02f21db9..1febe820c 100644 --- a/test/e2e/specs/06_suspendUser.js +++ b/test/e2e/specs/06_suspendUser.js @@ -1,3 +1,4 @@ +const printBrowserLog = require('../helpers/printBrowserLog'); const commentBody = 'Suspend User Test'; module.exports = { @@ -6,7 +7,8 @@ module.exports = { client.resizeWindow(1600, 1200); }, - afterEach: (client, done) => { + afterEach: async (client, done) => { + await printBrowserLog(client); if (client.currentTest.results.failed) { throw new Error('Test Case failed, skipping all the rest'); } diff --git a/yarn.lock b/yarn.lock index a4cec7ec7..0f6606433 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2114,11 +2114,14 @@ cli-spinners@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" +cli-table2@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/cli-table2/-/cli-table2-0.2.0.tgz#2d1ef7f218a0e786e214540562d4bd177fe32d97" dependencies: - colors "1.0.3" + lodash "^3.10.1" + string-width "^1.0.1" + optionalDependencies: + colors "^1.1.2" cli-truncate@^0.2.1: version "0.2.1" @@ -2248,7 +2251,7 @@ colors@0.5.x: version "0.5.1" resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" -colors@1.0.3, colors@1.0.x: +colors@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -7039,6 +7042,10 @@ lodash.values@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" +lodash@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + lodash@^4.0.0, lodash@^4.1.0, lodash@^4.2.0, lodash@^4.2.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" From 576820f1f8cd30ce82516a8419eaa767dea78f7b Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Tue, 29 May 2018 16:50:11 +0200 Subject: [PATCH 8/9] Fix warnings --- client/coral-framework/components/TalkProvider.js | 2 +- .../talk-plugin-auth/client/login/components/SignUp.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/coral-framework/components/TalkProvider.js b/client/coral-framework/components/TalkProvider.js index 9caba7fb8..804e57862 100644 --- a/client/coral-framework/components/TalkProvider.js +++ b/client/coral-framework/components/TalkProvider.js @@ -1,5 +1,5 @@ import React from 'react'; -const PropTypes = require('prop-types'); +import PropTypes from 'prop-types'; import { ApolloProvider } from 'react-apollo'; class TalkProvider extends React.Component { diff --git a/plugins/talk-plugin-auth/client/login/components/SignUp.js b/plugins/talk-plugin-auth/client/login/components/SignUp.js index 96dadcd67..878b53b5d 100644 --- a/plugins/talk-plugin-auth/client/login/components/SignUp.js +++ b/plugins/talk-plugin-auth/client/login/components/SignUp.js @@ -75,7 +75,7 @@ class SignUp extends React.Component { showErrors={!!emailError} errorMsg={emailError} onChange={this.handleEmailChange} - autocomplete="off" + autoComplete="off" /> {passwordError && ( @@ -116,7 +116,7 @@ class SignUp extends React.Component { errorMsg={passwordRepeatError} onChange={this.handlePasswordRepeatChange} minLength="8" - autocomplete="off" + autoComplete="off" /> Date: Tue, 29 May 2018 16:52:07 +0200 Subject: [PATCH 9/9] Typo --- test/e2e/helpers/printBrowserLog.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/helpers/printBrowserLog.js b/test/e2e/helpers/printBrowserLog.js index b40fb4507..a9b8e50f4 100644 --- a/test/e2e/helpers/printBrowserLog.js +++ b/test/e2e/helpers/printBrowserLog.js @@ -3,7 +3,7 @@ require('colors'); const Table = require('cli-table2'); -function getLevelColoried(level) { +function getLevelColorized(level) { switch (level) { case 'WARNING': return level.yellow; @@ -25,7 +25,7 @@ function printBrowserLog(client) { }); for (let entry of entries) { - table.push([getLevelColoried(entry.level), entry.message]); + table.push([getLevelColorized(entry.level), entry.message]); } console.log(table.toString()); }