diff --git a/.editorconfig b/.editorconfig index b57b1c06..903f9a95 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,7 +10,7 @@ insert_final_newline = true trim_trailing_whitespace = true indent_style = space -[{.jshintrc,*.json,*.yml,*.xml,*.sh,*.conf,*.neon}] +[{.jshintrc,*.json,*.yml,*.xml,*.sh,*.conf,*.neon,*.xliff}] indent_style = space indent_size = 2 diff --git a/.github/ISSUE_TEMPLATE/---report-a-bug.md b/.github/ISSUE_TEMPLATE/---report-a-bug.md index d4e78b50..aed229ad 100644 --- a/.github/ISSUE_TEMPLATE/---report-a-bug.md +++ b/.github/ISSUE_TEMPLATE/---report-a-bug.md @@ -1,33 +1,33 @@ ---- -name: "\U0001F41B Report a bug" -about: Is something not working as you expected? - ---- - -## Expected behaviour -> Describe the bug; what should happen? - -## Current behaviour -> What happens instead of the expected behaviour? - -## Possible solution -> Not obligatory, but you can suggest a fix/reason for the bug. Thanks! - -## Steps to reproduce -> Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code to reproduce, if relevant. -1. -2. -3. -4. - -## Context -> How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world. - -## Your environment -> Include as many relevant details about the environment you experienced the bug in: - -* WordHat version used: -* Environment name and version (e.g. PHP 7.1 on nginx 1.11.9): -* Server operating system type and version: -* Type of Behat browser used (e.g. Selenium, headless Chrome, etc): -* Link to your project: +--- +name: "\U0001F41B Report a bug" +about: Is something not working as you expected? + +--- + +## Expected behaviour +> Describe the bug; what should happen? + +## Current behaviour +> What happens instead of the expected behaviour? + +## Possible solution +> Not obligatory, but you can suggest a fix/reason for the bug. Thanks! + +## Steps to reproduce +> Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code to reproduce, if relevant. +1. +2. +3. +4. + +## Context +> How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world. + +## Your environment +> Include as many relevant details about the environment you experienced the bug in: + +* WordHat version used: +* Environment name and version (e.g. PHP 7.2 on nginx 1.11.9): +* Server operating system type and version: +* Type of Behat browser used (e.g. Selenium, headless Chrome, etc): +* Link to your project: diff --git a/.github/ISSUE_TEMPLATE/---request-a-feature.md b/.github/ISSUE_TEMPLATE/---request-a-feature.md index 46d7efb7..1bfe56f7 100644 --- a/.github/ISSUE_TEMPLATE/---request-a-feature.md +++ b/.github/ISSUE_TEMPLATE/---request-a-feature.md @@ -1,23 +1,23 @@ ---- -name: "\U0001F680 Request a feature" -about: Do you want to suggest a new feature, rule, or option? - ---- - -## Expected behaviour -> If you're suggesting a change/improvement, tell us how it should work. - -## Current behaviour -> If suggesting a change/improvement, explain the difference from current behaviour. - -## Context -> How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world. - -## Your environment -> Include as many relevant details about the environment you experienced the bug in: - -* WordHat version used: -* Environment name and version (e.g. PHP 7.1 on nginx 1.11.9): -* Server operating system type and version: -* Type of Behat browser used (e.g. Selenium, headless Chrome, etc): -* Link to your project: +--- +name: "\U0001F680 Request a feature" +about: Do you want to suggest a new feature, rule, or option? + +--- + +## Expected behaviour +> If you're suggesting a change/improvement, tell us how it should work. + +## Current behaviour +> If suggesting a change/improvement, explain the difference from current behaviour. + +## Context +> How has this issue affected you? What are you trying to accomplish? Providing context helps us come up with a solution that is most useful in the real world. + +## Your environment +> Include as many relevant details about the environment you experienced the bug in: + +* WordHat version used: +* Environment name and version (e.g. PHP 7.2 on nginx 1.11.9): +* Server operating system type and version: +* Type of Behat browser used (e.g. Selenium, headless Chrome, etc): +* Link to your project: diff --git a/.gitignore b/.gitignore index 90ee4c1e..235a8cd3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ vendor/ .DS_Store npm-debug.log -wp-cli.yml /selenium.log /tests/app/www diff --git a/.travis.yml b/.travis.yml index 8096f1d6..250ab6d6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,13 +16,13 @@ services: - mysql php: - - 7.1 + - 7.2 + - 7.3 cache: apt: true directories: - $HOME/.composer/cache/files - - $HOME/.npm git: depth: 3 @@ -34,9 +34,12 @@ matrix: env: global: - - WP_WEBROOT="tests/app/www/" - - BEHAT_PARAMS="{\"extensions\":{\"Behat\\\\MinkExtension\":{\"base_url\":\"http://localhost:8000\"},\"PaulGibbs\\\\WordpressBehatExtension\":{\"path\":\"$WP_WEBROOT\"}}}" - DEFAULT_COMPOSER_FLAGS="--no-interaction --no-progress --no-suggest --prefer-dist" + - WP_VERSION="~5.1" + - WP_WEBROOT="tests/app/www/" + matrix: + - LABEL="wpcli" BEHAT_PARAMS="{\"extensions\":{\"PaulGibbs\\\\WordpressBehatExtension\":{\"default_driver\":\"wpcli\"}}}" + - LABEL="wpphp" BEHAT_PARAMS="{\"extensions\":{\"PaulGibbs\\\\WordpressBehatExtension\":{\"default_driver\":\"wpphp\"}}}" before_install: - phpenv config-rm xdebug.ini @@ -45,19 +48,16 @@ before_install: install: - travis_retry composer global require $DEFAULT_COMPOSER_FLAGS hirak/prestissimo - travis_retry composer install $DEFAULT_COMPOSER_FLAGS - - travis_retry composer require roots/wordpress ^5.1 - - npm install selenium-standalone@latest -g - - selenium-standalone install + - travis_retry composer require roots/wordpress $WP_VERSION # Start webserver. - php -S localhost:8000 -t $WP_WEBROOT 2>/dev/null & - - sleep 10 + - sleep 5 - scripts/install.sh -before_script: - # Start Selenium. - - xvfb-run --server-args="-screen 0 1920x1080x24" selenium-standalone start 2>&1 1>/dev/null & - - sleep 20 + # Start Chrome. + - google-chrome-stable --headless --disable-gpu --no-sandbox --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 & + - sleep 5 script: - curl -I http://localhost:8000 diff --git a/behat.yml b/behat.yml index 48a873c5..c0604900 100644 --- a/behat.yml +++ b/behat.yml @@ -15,7 +15,10 @@ default: - FailAid\Context\FailureContext extensions: + DMore\ChromeExtension\Behat\ServiceContainer\ChromeExtension: ~ + Behat\MinkExtension: + base_url: http://behat.local browser_name: chrome default_session: headless javascript_session: javascript @@ -23,10 +26,11 @@ default: headless: goutte: guzzle_parameters: - verify: false # Allow self-signed SSL certificates + verify: false javascript: - selenium2: - wd_host: "http://127.0.0.1:4444/wd/hub" + chrome: + api_url: http://localhost:9222 + validate_certificate: false PaulGibbs\WordpressBehatExtension: default_driver: wpcli @@ -39,7 +43,9 @@ default: database: restore_after_test: true wpcli: - binary: ./vendor/bin/wp + binary: vendor/bin/wp + alias: dev + site_url: http://behat.local/wp/ FailAid\Extension: screenshotDirectory: '%paths.base%/tests/artifacts' diff --git a/behat.yml.dist b/behat.yml.dist index b58ac54c..66a919d0 100644 --- a/behat.yml.dist +++ b/behat.yml.dist @@ -14,18 +14,22 @@ default: - PaulGibbs\WordpressBehatExtension\Context\ToolbarContext extensions: + DMore\ChromeExtension\Behat\ServiceContainer\ChromeExtension: ~ + Behat\MinkExtension: base_url: http://your-wordpress-site.example.com browser_name: chrome - default_session: default - javascript_session: selenium2 + default_session: headless + javascript_session: javascript sessions: - default: + headless: goutte: guzzle_parameters: - verify: false # Allow self-signed SSL certificates - selenium2: - selenium2: ~ + verify: false + javascript: + chrome: + api_url: http://localhost:9222 + validate_certificate: false PaulGibbs\WordpressBehatExtension: default_driver: wpcli @@ -35,6 +39,6 @@ default: roles: - administrator username: admin - password: admin + password: password database: restore_after_test: true diff --git a/composer.json b/composer.json index 91dda986..7dd35091 100644 --- a/composer.json +++ b/composer.json @@ -1,13 +1,12 @@ { "name": "paulgibbs/behat-wordpress-extension", "type": "behat-extension", - "description": "WordHat is a Behat extension, integrating Behat, Mink, and WordPress. It provides WordPress-specific functionality for common testing scenarios specific to WordPress sites.", + "description": "WordHat is a Behat extension for WordPress. It provides WordPress-specific functionality for common testing scenarios specific to WordPress sites.", "keywords": [ "WordPress", "behat", "extension", - "bdd", - "mink" + "bdd" ], "homepage": "https://wordhat.info", "license": "GPL-3.0-or-later", @@ -21,10 +20,7 @@ "config": { "preferred-install": "dist", "sort-packages": true, - "autoloader-suffix": "wordhat", - "platform": { - "php": "7.1" - } + "autoloader-suffix": "wordhat" }, "autoload": { "psr-4": { @@ -36,25 +32,22 @@ }, "require": { "behat/behat": "~3.1", - "php": "~7.1", + "php": ">=7.2 <7.4", "sensiolabs/behat-page-object-extension": "~2.1", - "behat/mink-extension": "~2.3", - - "ocramius/proxy-manager": "2.1" + "behat/mink-extension": "~2.3" }, "require-dev": { "behat/mink-goutte-driver": "^1.2", - "behat/mink-selenium2-driver": "^1.3", + "dmore/behat-chrome-extension": "^1.3", "genesis/behat-fail-aid": "^2.0", - "joomla-projects/selenium-server-standalone": "~3.5", - "phing/phing": "~2.16", "phpstan/phpstan": "~0.9", "squizlabs/php_codesniffer": "~3.0", - "wp-cli/wp-cli": "~1.5" + "wp-cli/wp-cli-bundle": "~2.1" }, "suggest": { "behat/mink-goutte-driver": "Headless Mink driver", - "behat/mink-selenium2-driver": "JS-enabled Mink driver (requires Selenium2)", + "behat/mink-selenium2-driver": "JS-enabled Mink driver (requires Selenium)", + "dmore/behat-chrome-extension": "JS-enabled Mink driver for Chrome (does not require Selenium)", "genesis/behat-fail-aid": "Get more out of your test suite by getting it to work with you when tests fail." }, "extra": { @@ -72,14 +65,15 @@ "ci-tests": [ "@test:behat-ci" ], - "local-tests": [ + "tests": [ "@test:behat-local" ], "test:behat-ci": [ - "vendor/bin/behat --colors --format progress" + "vendor/bin/behat --config tests/app/behat-ci.yml --colors --format progress" ], "test:behat-local": [ + "vendor/bin/behat --colors" ] } } diff --git a/composer.lock b/composer.lock index 827b6c41..60067529 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2efa86302fcc457dcc0eb0c7d231abdb", + "content-hash": "7b3426545e067f70f052f8d55218bdde", "packages": [ { "name": "behat/behat", @@ -387,31 +387,34 @@ }, { "name": "ocramius/proxy-manager", - "version": "2.1.0", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "d9e5a00ca2d87b7e0f1bff36b897e02afd7d5435" + "reference": "14b137b06b0f911944132df9d51e445a35920ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/d9e5a00ca2d87b7e0f1bff36b897e02afd7d5435", - "reference": "d9e5a00ca2d87b7e0f1bff36b897e02afd7d5435", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/14b137b06b0f911944132df9d51e445a35920ab1", + "reference": "14b137b06b0f911944132df9d51e445a35920ab1", "shasum": "" }, "require": { - "ocramius/package-versions": "^1.1.1", - "php": "^7.1.0", - "zendframework/zend-code": "^3.1.0" + "ocramius/package-versions": "^1.1.3", + "php": "^7.2.0", + "zendframework/zend-code": "^3.3.0" }, "require-dev": { - "couscous/couscous": "^1.5.2", + "couscous/couscous": "^1.6.1", "ext-phar": "*", - "humbug/humbug": "dev-master@DEV", + "humbug/humbug": "1.0.0-RC.0@RC", + "nikic/php-parser": "^3.1.1", + "padraic/phpunit-accelerator": "dev-master@DEV", "phpbench/phpbench": "^0.12.2", - "phpunit/phpunit": "^5.6.4", - "phpunit/phpunit-mock-objects": "^3.4.1", - "squizlabs/php_codesniffer": "^2.7.0" + "phpstan/phpstan": "dev-master#856eb10a81c1d27c701a83f167dc870fd8f4236a as 0.9.999", + "phpstan/phpstan-phpunit": "dev-master#5629c0a1f4a9c417cb1077cf6693ad9753895761", + "phpunit/phpunit": "^6.4.3", + "squizlabs/php_codesniffer": "^2.9.1" }, "suggest": { "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", @@ -450,7 +453,7 @@ "proxy pattern", "service proxies" ], - "time": "2016-11-30T15:45:00+00:00" + "time": "2018-09-27T13:45:01+00:00" }, { "name": "psr/container", @@ -501,82 +504,35 @@ ], "time": "2017-02-14T16:28:37+00:00" }, - { - "name": "psr/log", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2018-11-20T15:27:04+00:00" - }, { "name": "sensiolabs/behat-page-object-extension", - "version": "v2.1.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/sensiolabs/BehatPageObjectExtension.git", - "reference": "bd2a34221ba65ea8c86d8e693992d718de03dbae" + "reference": "a05dda9dc38bfb3c789a936fd003b351a9a396be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/BehatPageObjectExtension/zipball/bd2a34221ba65ea8c86d8e693992d718de03dbae", - "reference": "bd2a34221ba65ea8c86d8e693992d718de03dbae", + "url": "https://api.github.com/repos/sensiolabs/BehatPageObjectExtension/zipball/a05dda9dc38bfb3c789a936fd003b351a9a396be", + "reference": "a05dda9dc38bfb3c789a936fd003b351a9a396be", "shasum": "" }, "require": { - "behat/behat": "^3.0.6", - "behat/mink": "^1.6", - "behat/mink-extension": "^2.0", - "ocramius/proxy-manager": "^1.0||^2.0", - "php": ">=5.3.0" + "behat/behat": "^3.3", + "behat/mink": "^1.7", + "behat/mink-extension": "^2.2", + "ocramius/proxy-manager": "^2.1.1", + "php": ">=7.1.3,<7.4" }, "require-dev": { - "behat/mink-goutte-driver": "^1.0", - "bossa/phpspec2-expect": "^1.0.3||^2.0", - "fabpot/goutte": "^1.0.4||^2.0||^3.0", - "phpspec/phpspec": "^2.5||^3.0", - "symfony/filesystem": "^2.8||^3.0", - "symfony/process": "^2.8||^3.0", - "symfony/yaml": "^2.8||^3.0" + "behat/mink-goutte-driver": "^1.2", + "bossa/phpspec2-expect": "^3.1", + "fabpot/goutte": "^3.2", + "phpspec/phpspec": "^5.1", + "symfony/filesystem": "^4.2", + "symfony/process": "^4.2", + "symfony/yaml": "^4.2" }, "suggest": { "bossa/phpspec2-expect": "Allows to use PHPSpec2 matchers in Behat context files" @@ -584,11 +540,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "SensioLabs\\Behat\\PageObjectExtension\\": "src/" } }, @@ -613,11 +569,11 @@ "Behat", "page" ], - "time": "2017-05-22T14:16:06+00:00" + "time": "2019-04-17T08:36:40+00:00" }, { "name": "symfony/class-loader", - "version": "v3.4.24", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", @@ -673,32 +629,32 @@ }, { "name": "symfony/config", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "177a276c01575253c95cefe0866e3d1b57637fe0" + "reference": "6379ee07398643e09e6ed1e87d9c62dfcad7f4eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/177a276c01575253c95cefe0866e3d1b57637fe0", - "reference": "177a276c01575253c95cefe0866e3d1b57637fe0", + "url": "https://api.github.com/repos/symfony/config/zipball/6379ee07398643e09e6ed1e87d9c62dfcad7f4eb", + "reference": "6379ee07398643e09e6ed1e87d9c62dfcad7f4eb", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/filesystem": "~2.8|~3.0|~4.0", + "php": "^7.1.3", + "symfony/filesystem": "~3.4|~4.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/finder": "<3.3" + "symfony/finder": "<3.4" }, "require-dev": { - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/event-dispatcher": "~3.3|~4.0", - "symfony/finder": "~3.3|~4.0", - "symfony/yaml": "~3.0|~4.0" + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/messenger": "~4.1", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -706,7 +662,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -733,29 +689,31 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { "name": "symfony/console", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "98ae3cdc4bec48fe7ee24afc81dbb4a242186c9e" + "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/98ae3cdc4bec48fe7ee24afc81dbb4a242186c9e", - "reference": "98ae3cdc4bec48fe7ee24afc81dbb4a242186c9e", + "url": "https://api.github.com/repos/symfony/console/zipball/d50bbeeb0e17e6dd4124ea391eff235e932cbf64", + "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1" }, "conflict": { "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3", "symfony/process": "<3.3" }, "provide": { @@ -763,11 +721,12 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", + "symfony/config": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "^4.3", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" + "symfony/process": "~3.4|~4.0", + "symfony/var-dumper": "^4.3" }, "suggest": { "psr/log": "For using the console logger", @@ -778,7 +737,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -805,11 +764,11 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-03-31T11:33:18+00:00" + "time": "2019-06-05T13:25:51+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.24", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -861,38 +820,55 @@ "time": "2019-01-16T09:39:14+00:00" }, { - "name": "symfony/debug", - "version": "v3.4.24", + "name": "symfony/dependency-injection", + "version": "v4.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "adbdd5d66342fb0a0bce7422ba68181842b6610d" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "fea7f73e278ee0337349a5a68b867fc656bb33f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/adbdd5d66342fb0a0bce7422ba68181842b6610d", - "reference": "adbdd5d66342fb0a0bce7422ba68181842b6610d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/fea7f73e278ee0337349a5a68b867fc656bb33f3", + "reference": "fea7f73e278ee0337349a5a68b867fc656bb33f3", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" + "php": "^7.1.3", + "psr/container": "^1.0", + "symfony/service-contracts": "^1.1.2" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/config": "<4.3", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0" }, "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" + "symfony/config": "^4.3", + "symfony/expression-language": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -912,58 +888,57 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2019-03-10T17:07:42+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v3.4.24", + "name": "symfony/event-dispatcher", + "version": "v4.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "85172cca352fe0790fa6f485ad194862a8ac57ee" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/85172cca352fe0790fa6f485ad194862a8ac57ee", - "reference": "85172cca352fe0790fa6f485ad194862a8ac57ee", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4e6c670af81c4fb0b6c08b035530a9915d0b691f", + "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/container": "^1.0" + "php": "^7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" }, "conflict": { - "symfony/config": "<3.3.7", - "symfony/finder": "<3.3", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" + "symfony/dependency-injection": "<3.4" }, "provide": { - "psr/container-implementation": "1.0" + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { - "symfony/config": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/yaml": "~3.4|~4.0" + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "^3.4|^4.0", + "symfony/service-contracts": "^1.1", + "symfony/stopwatch": "~3.4|~4.0" }, "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -983,54 +958,41 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DependencyInjection Component", + "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-03-25T07:48:46+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v3.4.24", + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a088aafcefb4eef2520a290ed82e4374092a6dff", - "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", + "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0" + "php": "^7.1.3" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "1.1-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1038,40 +1000,48 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", - "time": "2019-04-02T08:51:52+00:00" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-20T06:46:26+00:00" }, { "name": "symfony/filesystem", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb" + "reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/acf99758b1df8e9295e6b85aa69f294565c9fedb", - "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/bf2af40d738dec5e433faea7b00daa4431d0a4cf", + "reference": "bf2af40d738dec5e433faea7b00daa4431d0a4cf", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1098,7 +1068,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-02-04T21:34:32+00:00" + "time": "2019-06-03T20:27:40+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1145,7 +1115,7 @@ }, { "name": "Gert de Pagter", - "email": "backendtea@gmail.com" + "email": "BackEndTea@gmail.com" } ], "description": "Symfony polyfill for ctype functions", @@ -1217,35 +1187,159 @@ ], "time": "2019-02-06T07:57:58+00:00" }, + { + "name": "symfony/polyfill-php73", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v1.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", + "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-13T11:15:36+00:00" + }, { "name": "symfony/translation", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "629ac01240f6ebc253a621e19b84e329fe19a987" + "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/629ac01240f6ebc253a621e19b84e329fe19a987", - "reference": "629ac01240f6ebc253a621e19b84e329fe19a987", + "url": "https://api.github.com/repos/symfony/translation/zipball/5dda505e5f65d759741dfaf4e54b36010a4b57aa", + "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^1.1.2" }, "conflict": { - "symfony/config": "<2.8", + "symfony/config": "<3.4", "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, + "provide": { + "symfony/translation-implementation": "1.0" + }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/service-contracts": "^1.1.2", + "symfony/var-dumper": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -1256,7 +1350,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1283,24 +1377,81 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2019-03-25T07:48:46+00:00" + "time": "2019-06-03T20:27:40+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v1.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/cb4b18ad7b92a26e83b65dde940fab78339e6f3c", + "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-06-13T11:15:36+00:00" }, { "name": "symfony/yaml", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "212a27b731e5bfb735679d1ffaac82bd6a1dc996" + "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/212a27b731e5bfb735679d1ffaac82bd6a1dc996", - "reference": "212a27b731e5bfb735679d1ffaac82bd6a1dc996", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99", + "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -1315,7 +1466,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1342,7 +1493,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-03-25T07:48:46+00:00" + "time": "2019-04-06T14:04:46+00:00" }, { "name": "zendframework/zend-code", @@ -1683,16 +1834,16 @@ }, { "name": "composer/composer", - "version": "1.8.4", + "version": "1.8.6", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "bc364c2480c17941e2135cfc568fa41794392534" + "reference": "19b5f66a0e233eb944f134df34091fe1c5dfcc11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/bc364c2480c17941e2135cfc568fa41794392534", - "reference": "bc364c2480c17941e2135cfc568fa41794392534", + "url": "https://api.github.com/repos/composer/composer/zipball/19b5f66a0e233eb944f134df34091fe1c5dfcc11", + "reference": "19b5f66a0e233eb944f134df34091fe1c5dfcc11", "shasum": "" }, "require": { @@ -1759,7 +1910,7 @@ "dependency", "package" ], - "time": "2019-02-11T09:52:10+00:00" + "time": "2019-06-11T13:03:06+00:00" }, { "name": "composer/semver", @@ -1870,44 +2021,144 @@ "homepage": "http://seld.be" }, { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "time": "2019-03-26T10:23:26+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2019-05-27T17:52:04+00:00" + }, + { + "name": "dmore/behat-chrome-extension", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://gitlab.com/DMore/behat-chrome-extension.git", + "reference": "6279986ef85ac179f055460502e9b11c3784146c" + }, + "dist": { + "type": "zip", + "url": "https://gitlab.com/api/v4/projects/DMore%2Fbehat-chrome-extension/repository/archive.zip?sha=6279986ef85ac179f055460502e9b11c3784146c", + "reference": "6279986ef85ac179f055460502e9b11c3784146c", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.4", + "behat/mink-extension": "^2.0", + "dmore/chrome-mink-driver": "^2.4.1", + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "DMore\\ChromeExtension\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dorian More", + "email": "doriancmore@gmail.com" } ], - "description": "SPDX licenses list and validation library.", + "description": "Behat extension for controlling chrome without selenium", "keywords": [ - "license", - "spdx", - "validator" + "Behat", + "chrome", + "driver", + "headless" ], - "time": "2019-03-26T10:23:26+00:00" + "time": "2019-03-30T08:57:34+00:00" }, { - "name": "composer/xdebug-handler", - "version": "1.3.2", + "name": "dmore/chrome-mink-driver", + "version": "2.7.0", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "d17708133b6c276d6e42ef887a877866b909d892" + "url": "https://gitlab.com/DMore/chrome-mink-driver.git", + "reference": "d66765fb7f448e8b2bca2b899308a4a6d8a69264" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", - "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "url": "https://gitlab.com/api/v4/projects/DMore%2Fchrome-mink-driver/repository/archive.zip?sha=d66765fb7f448e8b2bca2b899308a4a6d8a69264", + "reference": "d66765fb7f448e8b2bca2b899308a4a6d8a69264", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" + "behat/mink": "^1.7", + "ext-curl": "*", + "ext-json": "*", + "textalk/websocket": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "mink/driver-testsuite": "dev-master", + "phpunit/phpunit": "^5.0.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "Composer\\XdebugHandler\\": "src" + "DMore\\ChromeDriver\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1916,16 +2167,12 @@ ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Dorian More", + "email": "doriancmore@gmail.com" } ], - "description": "Restarts a process without xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "time": "2019-01-28T20:25:53+00:00" + "description": "Mink driver for controlling chrome without selenium", + "time": "2019-03-30T09:22:58+00:00" }, { "name": "fabpot/goutte", @@ -1984,16 +2231,16 @@ }, { "name": "genesis/behat-fail-aid", - "version": "2.0.2", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/forceedge01/behat-fail-aid.git", - "reference": "d0b5652f79bcd880a8c2992dfb5ec0d7acb2f033" + "reference": "b61ca028bb23a8dc1dfda7314320d47c0d974c04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/forceedge01/behat-fail-aid/zipball/d0b5652f79bcd880a8c2992dfb5ec0d7acb2f033", - "reference": "d0b5652f79bcd880a8c2992dfb5ec0d7acb2f033", + "url": "https://api.github.com/repos/forceedge01/behat-fail-aid/zipball/b61ca028bb23a8dc1dfda7314320d47c0d974c04", + "reference": "b61ca028bb23a8dc1dfda7314320d47c0d974c04", "shasum": "" }, "require": { @@ -2028,7 +2275,130 @@ "error", "fail" ], - "time": "2018-11-21T18:59:34+00:00" + "time": "2019-06-15T17:44:23+00:00" + }, + { + "name": "gettext/gettext", + "version": "v4.6.2", + "source": { + "type": "git", + "url": "https://github.com/oscarotero/Gettext.git", + "reference": "93176b272d61fb58a9767be71c50d19149cb1e48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/oscarotero/Gettext/zipball/93176b272d61fb58a9767be71c50d19149cb1e48", + "reference": "93176b272d61fb58a9767be71c50d19149cb1e48", + "shasum": "" + }, + "require": { + "gettext/languages": "^2.3", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/view": "*", + "phpunit/phpunit": "^4.8|^5.7|^6.5", + "squizlabs/php_codesniffer": "^3.0", + "symfony/yaml": "~2", + "twig/extensions": "*", + "twig/twig": "^1.31|^2.0" + }, + "suggest": { + "illuminate/view": "Is necessary if you want to use the Blade extractor", + "symfony/yaml": "Is necessary if you want to use the Yaml extractor/generator", + "twig/extensions": "Is necessary if you want to use the Twig extractor", + "twig/twig": "Is necessary if you want to use the Twig extractor" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gettext\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oscar Otero", + "email": "oom@oscarotero.com", + "homepage": "http://oscarotero.com", + "role": "Developer" + } + ], + "description": "PHP gettext manager", + "homepage": "https://github.com/oscarotero/Gettext", + "keywords": [ + "JS", + "gettext", + "i18n", + "mo", + "po", + "translation" + ], + "time": "2019-01-12T18:40:56+00:00" + }, + { + "name": "gettext/languages", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/mlocati/cldr-to-gettext-plural-rules.git", + "reference": "78db2d17933f0765a102f368a6663f057162ddbd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mlocati/cldr-to-gettext-plural-rules/zipball/78db2d17933f0765a102f368a6663f057162ddbd", + "reference": "78db2d17933f0765a102f368a6663f057162ddbd", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "^4" + }, + "bin": [ + "bin/export-plural-rules", + "bin/export-plural-rules.php" + ], + "type": "library", + "autoload": { + "psr-4": { + "Gettext\\Languages\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michele Locati", + "email": "mlocati@gmail.com", + "role": "Developer" + } + ], + "description": "gettext languages with plural rules", + "homepage": "https://github.com/mlocati/cldr-to-gettext-plural-rules", + "keywords": [ + "cldr", + "i18n", + "internationalization", + "l10n", + "language", + "languages", + "localization", + "php", + "plural", + "plural rules", + "plurals", + "translate", + "translations", + "unicode" + ], + "time": "2018-11-13T22:06:07+00:00" }, { "name": "guzzlehttp/guzzle", @@ -2323,55 +2693,6 @@ ], "time": "2018-06-13T13:22:40+00:00" }, - { - "name": "joomla-projects/selenium-server-standalone", - "version": "v3.14.0", - "source": { - "type": "git", - "url": "https://github.com/joomla-projects/selenium-server-standalone.git", - "reference": "2939723f470918b6b72b0c05ba1978a41f0ef49d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/joomla-projects/selenium-server-standalone/zipball/2939723f470918b6b72b0c05ba1978a41f0ef49d", - "reference": "2939723f470918b6b72b0c05ba1978a41f0ef49d", - "shasum": "" - }, - "bin": [ - "bin/selenium-server-standalone" - ], - "type": "library", - "autoload": { - "files": [ - "Selenium.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sven Eisenschmidt", - "email": "sven.eisenschmidt@gmail.com" - }, - { - "name": "Puneet Kala", - "email": "puneet.kala@community.joomla.org" - }, - { - "name": "Javier Gomez", - "email": "javier.gomez@community.joomla.org" - } - ], - "description": "Composer distribution of Selenium Server Standalone, the browser automation framework. Adds a executable to your composer bin directory.", - "homepage": "https://github.com/joomla-projects/selenium-server-standalone", - "keywords": [ - "selenium", - "testing" - ], - "time": "2018-08-19T04:08:16+00:00" - }, { "name": "justinrainbow/json-schema", "version": "5.2.8", @@ -2438,6 +2759,51 @@ ], "time": "2019-01-14T23:55:14+00:00" }, + { + "name": "mck89/peast", + "version": "v1.9.2", + "source": { + "type": "git", + "url": "https://github.com/mck89/peast.git", + "reference": "7c9e487a0bb2410b3b7f27e8274cd04248b68197" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mck89/peast/zipball/7c9e487a0bb2410b3b7f27e8274cd04248b68197", + "reference": "7c9e487a0bb2410b3b7f27e8274cd04248b68197", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9.2-dev" + } + }, + "autoload": { + "psr-4": { + "Peast\\": "lib/Peast/", + "Peast\\test\\": "test/Peast/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Marchiò", + "email": "marco.mm89@gmail.com" + } + ], + "description": "Peast is PHP library that generates AST for JavaScript code", + "time": "2019-05-24T16:47:14+00:00" + }, { "name": "mustache/mustache", "version": "v2.12.0", @@ -2723,7 +3089,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "description": "? Nette Finder: find files and directories with an intuitive API.", "homepage": "https://nette.org", "keywords": [ "filesystem", @@ -2783,7 +3149,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "🍸 Nette NEON: encodes and decodes NEON file format.", + "description": "? Nette NEON: encodes and decodes NEON file format.", "homepage": "http://ne-on.org", "keywords": [ "export", @@ -3050,16 +3416,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.2.1", + "version": "v4.2.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0" + "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/5221f49a608808c1e4d436df32884cbc1b821ac0", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420", + "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420", "shasum": "" }, "require": { @@ -3097,125 +3463,33 @@ "parser", "php" ], - "time": "2019-02-16T20:54:15+00:00" - }, - { - "name": "phing/phing", - "version": "2.16.1", - "source": { - "type": "git", - "url": "https://github.com/phingofficial/phing.git", - "reference": "cbe0f969e434e269af91b4160b86fe899c6e07c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phingofficial/phing/zipball/cbe0f969e434e269af91b4160b86fe899c6e07c7", - "reference": "cbe0f969e434e269af91b4160b86fe899c6e07c7", - "shasum": "" - }, - "require": { - "php": ">=5.2.0", - "symfony/yaml": "^3.1 || ^4.0" - }, - "require-dev": { - "ext-pdo_sqlite": "*", - "mikey179/vfsstream": "^1.6", - "pdepend/pdepend": "2.x", - "pear/archive_tar": "1.4.x", - "pear/http_request2": "dev-trunk", - "pear/net_growl": "dev-trunk", - "pear/pear-core-minimal": "1.10.1", - "pear/versioncontrol_git": "@dev", - "pear/versioncontrol_svn": "~0.5", - "phpdocumentor/phpdocumentor": "2.x", - "phploc/phploc": "~2.0.6", - "phpmd/phpmd": "~2.2", - "phpunit/phpunit": ">=3.7", - "sebastian/git": "~1.0", - "sebastian/phpcpd": "2.x", - "siad007/versioncontrol_hg": "^1.0", - "simpletest/simpletest": "^1.1", - "squizlabs/php_codesniffer": "~2.2" - }, - "suggest": { - "pdepend/pdepend": "PHP version of JDepend", - "pear/archive_tar": "Tar file management class", - "pear/versioncontrol_git": "A library that provides OO interface to handle Git repository", - "pear/versioncontrol_svn": "A simple OO-style interface for Subversion, the free/open-source version control system", - "phpdocumentor/phpdocumentor": "Documentation Generator for PHP", - "phploc/phploc": "A tool for quickly measuring the size of a PHP project", - "phpmd/phpmd": "PHP version of PMD tool", - "phpunit/php-code-coverage": "Library that provides collection, processing, and rendering functionality for PHP code coverage information", - "phpunit/phpunit": "The PHP Unit Testing Framework", - "sebastian/phpcpd": "Copy/Paste Detector (CPD) for PHP code", - "siad007/versioncontrol_hg": "A library for interfacing with Mercurial repositories.", - "tedivm/jshrink": "Javascript Minifier built in PHP" - }, - "bin": [ - "bin/phing" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.16.x-dev" - } - }, - "autoload": { - "classmap": [ - "classes/phing/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "classes" - ], - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Michiel Rook", - "email": "mrook@php.net" - }, - { - "name": "Phing Community", - "homepage": "https://www.phing.info/trac/wiki/Development/Contributors" - } - ], - "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.", - "homepage": "https://www.phing.info/", - "keywords": [ - "build", - "phing", - "task", - "tool" - ], - "time": "2018-01-25T13:18:09+00:00" + "time": "2019-05-25T20:07:01+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "0.3.1", + "version": "0.3.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "2cc49f47c69b023eaf05b48e6529389893b13d74" + "reference": "8c4ef2aefd9788238897b678a985e1d5c8df6db4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/2cc49f47c69b023eaf05b48e6529389893b13d74", - "reference": "2cc49f47c69b023eaf05b48e6529389893b13d74", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/8c4ef2aefd9788238897b678a985e1d5c8df6db4", + "reference": "8c4ef2aefd9788238897b678a985e1d5c8df6db4", "shasum": "" }, "require": { "php": "~7.1" }, "require-dev": { - "consistence/coding-standard": "^2.0.0", + "consistence/coding-standard": "^3.5", "jakub-onderka/php-parallel-lint": "^0.9.2", "phing/phing": "^2.16.0", "phpstan/phpstan": "^0.10", "phpunit/phpunit": "^6.3", - "slevomat/coding-standard": "^3.3.0", + "slevomat/coding-standard": "^4.7.2", + "squizlabs/php_codesniffer": "^3.3.2", "symfony/process": "^3.4 || ^4.0" }, "type": "library", @@ -3236,20 +3510,20 @@ "MIT" ], "description": "PHPDoc parser with support for nullable, intersection and generic types", - "time": "2019-01-14T12:26:23+00:00" + "time": "2019-06-07T19:13:52+00:00" }, { "name": "phpstan/phpstan", - "version": "0.11.5", + "version": "0.11.8", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "24ce5a566a798b81343138ed5d41d6877554cf9a" + "reference": "fcf0081bf3a254ddacffa03e78be87842d0c09c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/24ce5a566a798b81343138ed5d41d6877554cf9a", - "reference": "24ce5a566a798b81343138ed5d41d6877554cf9a", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/fcf0081bf3a254ddacffa03e78be87842d0c09c9", + "reference": "fcf0081bf3a254ddacffa03e78be87842d0c09c9", "shasum": "" }, "require": { @@ -3258,10 +3532,11 @@ "nette/bootstrap": "^2.4 || ^3.0", "nette/di": "^2.4.7 || ^3.0", "nette/robot-loader": "^3.0.1", + "nette/schema": "^1.0", "nette/utils": "^2.4.5 || ^3.0", "nikic/php-parser": "^4.0.2", "php": "~7.1", - "phpstan/phpdoc-parser": "^0.3", + "phpstan/phpdoc-parser": "^0.3.4", "symfony/console": "~3.2 || ~4.0", "symfony/finder": "~3.2 || ~4.0" }, @@ -3309,7 +3584,7 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", - "time": "2019-03-25T16:40:09+00:00" + "time": "2019-05-28T19:58:33+00:00" }, { "name": "psr/http-message", @@ -3336,7 +3611,57 @@ }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3349,17 +3674,14 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "http", - "http-message", + "log", "psr", - "psr-7", - "request", - "response" + "psr-3" ], - "time": "2016-08-06T14:39:51+00:00" + "time": "2018-11-20T15:27:04+00:00" }, { "name": "ralouphie/getallheaders", @@ -3401,52 +3723,6 @@ "description": "A polyfill for getallheaders.", "time": "2016-02-11T07:05:27+00:00" }, - { - "name": "ramsey/array_column", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/array_column.git", - "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/array_column/zipball/f8e52eb28e67eb50e613b451dd916abcf783c1db", - "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db", - "shasum": "" - }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "0.8.*", - "phpunit/phpunit": "~4.5", - "satooshi/php-coveralls": "0.6.*", - "squizlabs/php_codesniffer": "~2.2" - }, - "type": "library", - "autoload": { - "files": [ - "src/array_column.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "homepage": "http://benramsey.com" - } - ], - "description": "Provides functionality for array_column() to projects using PHP earlier than version 5.5.", - "homepage": "https://github.com/ramsey/array_column", - "keywords": [ - "array", - "array_column", - "column" - ], - "abandoned": true, - "time": "2015-03-20T22:07:39+00:00" - }, { "name": "rmccue/requests", "version": "v1.7.0", @@ -3591,16 +3867,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.4.1", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5b4333b4010625d29580eb4a41f1e53251be6baa" + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5b4333b4010625d29580eb4a41f1e53251be6baa", - "reference": "5b4333b4010625d29580eb4a41f1e53251be6baa", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", + "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", "shasum": "" }, "require": { @@ -3638,29 +3914,31 @@ "phpcs", "standards" ], - "time": "2019-03-19T03:22:27+00:00" + "time": "2019-04-10T23:49:02+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "c0fadd368c1031109e996316e53ffeb886d37ea1" + "reference": "e07d50e84b8cf489590f22244f4f609579b4a2c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c0fadd368c1031109e996316e53ffeb886d37ea1", - "reference": "c0fadd368c1031109e996316e53ffeb886d37ea1", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e07d50e84b8cf489590f22244f4f609579b4a2c4", + "reference": "e07d50e84b8cf489590f22244f4f609579b4a2c4", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/dom-crawler": "~2.8|~3.0|~4.0" + "php": "^7.1.3", + "symfony/dom-crawler": "~3.4|~4.0" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0" + "symfony/css-selector": "~3.4|~4.0", + "symfony/http-client": "^4.3", + "symfony/mime": "^4.3", + "symfony/process": "~3.4|~4.0" }, "suggest": { "symfony/process": "" @@ -3668,7 +3946,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3695,29 +3973,33 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { "name": "symfony/dom-crawler", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "d40023c057393fb25f7ca80af2a56ed948c45a09" + "reference": "06ee58fbc9a8130f1d35b5280e15235a0515d457" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d40023c057393fb25f7ca80af2a56ed948c45a09", - "reference": "d40023c057393fb25f7ca80af2a56ed948c45a09", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/06ee58fbc9a8130f1d35b5280e15235a0515d457", + "reference": "06ee58fbc9a8130f1d35b5280e15235a0515d457", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, + "conflict": { + "masterminds/html5": "<2.6" + }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0" + "masterminds/html5": "^2.6", + "symfony/css-selector": "~3.4|~4.0" }, "suggest": { "symfony/css-selector": "" @@ -3725,7 +4007,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3752,29 +4034,29 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-05-31T18:55:30+00:00" }, { "name": "symfony/finder", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b" + "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/fcdde4aa38f48190ce70d782c166f23930084f9b", - "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b", + "url": "https://api.github.com/repos/symfony/finder/zipball/b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", + "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3801,29 +4083,29 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-02-22T14:44:53+00:00" + "time": "2019-05-26T20:47:49+00:00" }, { "name": "symfony/process", - "version": "v3.4.24", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e" + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e", - "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e", + "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c", + "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3850,32 +4132,32 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-01-16T13:27:11+00:00" + "time": "2019-05-30T16:10:05+00:00" }, { - "name": "wp-cli/autoload-splitter", - "version": "v0.1.5", + "name": "textalk/websocket", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/wp-cli/autoload-splitter.git", - "reference": "fb4302da26390811d2631c62b42b75976d224bb8" + "url": "https://github.com/Textalk/websocket-php.git", + "reference": "bfa18bb6bf523680c7803f6b04694fbbf2f67bbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/autoload-splitter/zipball/fb4302da26390811d2631c62b42b75976d224bb8", - "reference": "fb4302da26390811d2631c62b42b75976d224bb8", + "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/bfa18bb6bf523680c7803f6b04694fbbf2f67bbf", + "reference": "bfa18bb6bf523680c7803f6b04694fbbf2f67bbf", "shasum": "" }, - "require": { - "composer-plugin-api": "^1.1" - }, - "type": "composer-plugin", - "extra": { - "class": "WP_CLI\\AutoloadSplitter\\ComposerPlugin" + "require-dev": { + "cboden/ratchet": "0.3.*", + "phpunit/phpunit": "4.1.*", + "phpunit/phpunit-selenium": "1.3.3", + "satooshi/php-coveralls": "dev-master" }, + "type": "library", "autoload": { "psr-4": { - "WP_CLI\\AutoloadSplitter\\": "src" + "WebSocket\\": "lib" } }, "notification-url": "https://packagist.org/downloads/", @@ -3884,37 +4166,38 @@ ], "authors": [ { - "name": "Alain Schlesser", - "email": "alain.schlesser@gmail.com", - "homepage": "https://www.alainschlesser.com" + "name": "Fredrik Liljegren", + "email": "fredrik.liljegren@textalk.se" } ], - "description": "Composer plugin for splitting a generated autoloader into two distinct parts.", - "homepage": "https://wp-cli.org", - "time": "2017-08-03T08:40:16+00:00" + "description": "WebSocket client and server", + "time": "2015-10-09T07:32:42+00:00" }, { "name": "wp-cli/cache-command", - "version": "v1.0.6", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/cache-command.git", - "reference": "d82cba9effa198f17847dce5771c8fb20c443ffa" + "reference": "56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/d82cba9effa198f17847dce5771c8fb20c443ffa", - "reference": "d82cba9effa198f17847dce5771c8fb20c443ffa", + "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8", + "reference": "56e2a8186c28bc1edbb8bc1c0f3d3b30fa116ea8", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -3932,7 +4215,8 @@ "transient delete", "transient get", "transient set", - "transient type" + "transient type", + "transient list" ] }, "autoload": { @@ -3956,30 +4240,33 @@ ], "description": "Manages object and transient caches.", "homepage": "https://github.com/wp-cli/cache-command", - "time": "2017-12-14T19:21:19+00:00" + "time": "2019-04-19T15:13:51+00:00" }, { "name": "wp-cli/checksum-command", - "version": "v1.0.9", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/checksum-command.git", - "reference": "89a319440651f2867f282339c2223cfe5e9cc3fb" + "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/89a319440651f2867f282339c2223cfe5e9cc3fb", - "reference": "89a319440651f2867f282339c2223cfe5e9cc3fb", + "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/7db66668ec116c5ccef7bc27b4354fa81b85018a", + "reference": "7db66668ec116c5ccef7bc27b4354fa81b85018a", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4008,33 +4295,34 @@ ], "description": "Verifies file integrity by comparing to published checksums.", "homepage": "https://github.com/wp-cli/checksum-command", - "time": "2018-04-20T07:47:27+00:00" + "time": "2019-04-25T00:28:02+00:00" }, { "name": "wp-cli/config-command", - "version": "v1.2.0", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/wp-cli/config-command.git", - "reference": "7bec9b4685b4022ab511630422dd6acccadfca9b" + "reference": "b7e69946e4ec711d4568d11d2b7e08f5e872567d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/config-command/zipball/7bec9b4685b4022ab511630422dd6acccadfca9b", - "reference": "7bec9b4685b4022ab511630422dd6acccadfca9b", + "url": "https://api.github.com/repos/wp-cli/config-command/zipball/b7e69946e4ec711d4568d11d2b7e08f5e872567d", + "reference": "b7e69946e4ec711d4568d11d2b7e08f5e872567d", "shasum": "" }, "require": { + "wp-cli/wp-cli": "^2", "wp-cli/wp-config-transformer": "^1.2.1" }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4046,7 +4334,8 @@ "config has", "config list", "config path", - "config set" + "config set", + "config shuffle-salts" ] }, "autoload": { @@ -4075,30 +4364,37 @@ ], "description": "Generates and reads the wp-config.php file.", "homepage": "https://github.com/wp-cli/config-command", - "time": "2018-04-20T08:03:51+00:00" + "time": "2019-04-25T00:28:22+00:00" }, { "name": "wp-cli/core-command", - "version": "v1.0.12", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/core-command.git", - "reference": "b41913707029c5147b38810700e424ed5f5fe8e0" + "reference": "14634828e559f69e2525fa9489635f301783aee8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/core-command/zipball/b41913707029c5147b38810700e424ed5f5fe8e0", - "reference": "b41913707029c5147b38810700e424ed5f5fe8e0", + "url": "https://api.github.com/repos/wp-cli/core-command/zipball/14634828e559f69e2525fa9489635f301783aee8", + "reference": "14634828e559f69e2525fa9489635f301783aee8", "shasum": "" }, + "require": { + "composer/semver": "^1.4", + "wp-cli/wp-cli": "^2.2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/checksum-command": "^1 || ^2", + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4135,30 +4431,33 @@ ], "description": "Downloads, installs, updates, and manages a WordPress installation.", "homepage": "https://github.com/wp-cli/core-command", - "time": "2018-07-25T15:55:02+00:00" + "time": "2019-04-25T05:45:44+00:00" }, { "name": "wp-cli/cron-command", - "version": "v1.0.5", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/cron-command.git", - "reference": "9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef" + "reference": "b6d0c8ff69cc56d5316a35a7a2fcc314c4069585" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef", - "reference": "9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef", + "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/b6d0c8ff69cc56d5316a35a7a2fcc314c4069585", + "reference": "b6d0c8ff69cc56d5316a35a7a2fcc314c4069585", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4194,34 +4493,38 @@ ], "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.", "homepage": "https://github.com/wp-cli/cron-command", - "time": "2017-12-08T15:09:54+00:00" + "time": "2019-04-24T07:31:46+00:00" }, { "name": "wp-cli/db-command", - "version": "v1.3.5", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/db-command.git", - "reference": "c260be59d9ac4c0012b016405e17d0251137fb89" + "reference": "dc0f8e4d5783d8a4ee01da1119b8fe8038fe1aa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/db-command/zipball/c260be59d9ac4c0012b016405e17d0251137fb89", - "reference": "c260be59d9ac4c0012b016405e17d0251137fb89", + "url": "https://api.github.com/repos/wp-cli/db-command/zipball/dc0f8e4d5783d8a4ee01da1119b8fe8038fe1aa0", + "reference": "dc0f8e4d5783d8a4ee01da1119b8fe8038fe1aa0", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ "db", + "db clean", "db create", "db drop", "db reset", @@ -4260,38 +4563,44 @@ ], "description": "Performs basic database operations using credentials stored in wp-config.php.", "homepage": "https://github.com/wp-cli/db-command", - "time": "2018-07-31T02:06:59+00:00" + "time": "2019-04-25T00:28:40+00:00" }, { "name": "wp-cli/embed-command", - "version": "v1.0.0", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/embed-command.git", - "reference": "81319d4243a8dfe096389bf54cdc4fc3dec53497" + "reference": "ce0c86217d9c0500666bd986ab17cae0ae33a41b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/81319d4243a8dfe096389bf54cdc4fc3dec53497", - "reference": "81319d4243a8dfe096389bf54cdc4fc3dec53497", + "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/ce0c86217d9c0500666bd986ab17cae0ae33a41b", + "reference": "ce0c86217d9c0500666bd986ab17cae0ae33a41b", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ "embed", "embed fetch", + "embed provider", "embed provider list", "embed provider match", + "embed handler", "embed handler list", + "embed cache", "embed cache clear", "embed cache find", "embed cache trigger" @@ -4317,31 +4626,36 @@ ], "description": "Inspects oEmbed providers, clears embed cache, and more.", "homepage": "https://github.com/wp-cli/embed-command", - "time": "2018-01-22T21:26:48+00:00" + "time": "2019-04-25T00:28:56+00:00" }, { "name": "wp-cli/entity-command", - "version": "v1.3.1", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/entity-command.git", - "reference": "7b000645684b6acbb1d55ab47b77eb08f35cd229" + "reference": "250ed0da61162819f601fa110251c7e4c5173f27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/7b000645684b6acbb1d55ab47b77eb08f35cd229", - "reference": "7b000645684b6acbb1d55ab47b77eb08f35cd229", + "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/250ed0da61162819f601fa110251c7e4c5173f27", + "reference": "250ed0da61162819f601fa110251c7e4c5173f27", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "phpunit/phpunit": "^4.8", - "wp-cli/wp-cli": "^1.5" + "wp-cli/cache-command": "^1 || ^2", + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/media-command": "^1.1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4405,6 +4719,7 @@ "post create", "post delete", "post edit", + "post exists", "post generate", "post get", "post list", @@ -4515,34 +4830,34 @@ "homepage": "https://runcommand.io" } ], - "description": "Manage WordPress core entities.", + "description": "Manage WordPress comments, menus, options, posts, sites, terms, and users.", "homepage": "https://github.com/wp-cli/entity-command", - "time": "2018-07-13T12:21:06+00:00" + "time": "2019-04-25T04:51:40+00:00" }, { "name": "wp-cli/eval-command", - "version": "v1.0.5", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/wp-cli/eval-command.git", - "reference": "9640d40ab28cd86590396f08f8c382e659f57321" + "reference": "47a4f1a910b6d88f090d776a80d893cf19ca2047" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/9640d40ab28cd86590396f08f8c382e659f57321", - "reference": "9640d40ab28cd86590396f08f8c382e659f57321", + "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/47a4f1a910b6d88f090d776a80d893cf19ca2047", + "reference": "47a4f1a910b6d88f090d776a80d893cf19ca2047", "shasum": "" }, "require": { - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5" + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4571,33 +4886,37 @@ ], "description": "Executes arbitrary PHP code or files.", "homepage": "https://github.com/wp-cli/eval-command", - "time": "2017-12-08T14:33:34+00:00" + "time": "2019-04-20T18:22:05+00:00" }, { "name": "wp-cli/export-command", - "version": "v1.0.7", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/export-command.git", - "reference": "776d33ad6b2ac93c00fded27402ca8e188e7bff0" + "reference": "941acde17ec056e7aaeb041ecaed7869f2e64801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/export-command/zipball/776d33ad6b2ac93c00fded27402ca8e188e7bff0", - "reference": "776d33ad6b2ac93c00fded27402ca8e188e7bff0", + "url": "https://api.github.com/repos/wp-cli/export-command/zipball/941acde17ec056e7aaeb041ecaed7869f2e64801", + "reference": "941acde17ec056e7aaeb041ecaed7869f2e64801", "shasum": "" }, "require": { - "nb/oxymel": "~0.1.0" + "nb/oxymel": "~0.1.0", + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/import-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4625,30 +4944,35 @@ ], "description": "Exports WordPress content to a WXR file.", "homepage": "https://github.com/wp-cli/export-command", - "time": "2018-04-20T08:10:47+00:00" + "time": "2019-04-24T19:55:58+00:00" }, { "name": "wp-cli/extension-command", - "version": "v1.2.2", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/extension-command.git", - "reference": "18f1036bad42f481f178c2f4139039e9424b6e14" + "reference": "7b4d4775a6a08493781b1ec67578f02a148ca23a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/18f1036bad42f481f178c2f4139039e9424b6e14", - "reference": "18f1036bad42f481f178c2f4139039e9424b6e14", + "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/7b4d4775a6a08493781b1ec67578f02a148ca23a", + "reference": "7b4d4775a6a08493781b1ec67578f02a148ca23a", "shasum": "" }, + "require": { + "composer/semver": "^1.4", + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/scaffold-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4707,32 +5031,92 @@ ], "description": "Manages plugins and themes, including installs, activations, and updates.", "homepage": "https://github.com/wp-cli/extension-command", - "time": "2018-07-31T17:46:49+00:00" + "time": "2019-06-05T11:15:16+00:00" + }, + { + "name": "wp-cli/i18n-command", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/i18n-command.git", + "reference": "e52a9a602772339a0f844bd5e9a9ac8cc8b490ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/e52a9a602772339a0f844bd5e9a9ac8cc8b490ea", + "reference": "e52a9a602772339a0f844bd5e9a9ac8cc8b490ea", + "shasum": "" + }, + "require": { + "gettext/gettext": "^4.6", + "mck89/peast": "^1.8", + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/scaffold-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "i18n", + "i18n make-pot", + "i18n make-json" + ] + }, + "autoload": { + "psr-4": { + "WP_CLI\\I18n\\": "src/" + }, + "files": [ + "i18n-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pascal Birchler", + "homepage": "https://pascalbirchler.com/" + } + ], + "description": "Provides internationalization tools for WordPress projects.", + "homepage": "https://github.com/wp-cli/i18n-command", + "time": "2019-04-25T00:31:04+00:00" }, { "name": "wp-cli/import-command", - "version": "v1.0.7", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/import-command.git", - "reference": "421fec5bd96671931f2119a89d28bae2f9edeb6b" + "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/import-command/zipball/421fec5bd96671931f2119a89d28bae2f9edeb6b", - "reference": "421fec5bd96671931f2119a89d28bae2f9edeb6b", + "url": "https://api.github.com/repos/wp-cli/import-command/zipball/e28a7f55138ceb53f2ff5926874d8e5582c87db8", + "reference": "e28a7f55138ceb53f2ff5926874d8e5582c87db8", "shasum": "" }, "require": { - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/export-command": "^1 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4760,41 +5144,59 @@ ], "description": "Imports content from a given WXR file.", "homepage": "https://github.com/wp-cli/import-command", - "time": "2018-04-20T08:07:05+00:00" + "time": "2019-04-19T14:32:57+00:00" }, { "name": "wp-cli/language-command", - "version": "v1.0.6", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/wp-cli/language-command.git", - "reference": "2a3d1ce5a722a4d70809619a065087aa933f6209" + "reference": "12197674eab3e1263fcadc9670cb57e916615c6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/language-command/zipball/2a3d1ce5a722a4d70809619a065087aa933f6209", - "reference": "2a3d1ce5a722a4d70809619a065087aa933f6209", + "url": "https://api.github.com/repos/wp-cli/language-command/zipball/12197674eab3e1263fcadc9670cb57e916615c6c", + "reference": "12197674eab3e1263fcadc9670cb57e916615c6c", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "language", "language core", "language core activate", + "language core is-installed", "language core install", "language core list", "language core uninstall", - "language core update" - ], - "bundled": true + "language core update", + "language plugin", + "language plugin is-installed", + "language plugin install", + "language plugin list", + "language plugin uninstall", + "language plugin update", + "language theme", + "language theme is-installed", + "language theme install", + "language theme list", + "language theme uninstall", + "language theme update" + ] }, "autoload": { "psr-4": { @@ -4817,30 +5219,90 @@ ], "description": "Installs, activates, and manages language packs.", "homepage": "https://github.com/wp-cli/language-command", - "time": "2017-12-08T17:50:26+00:00" + "time": "2019-04-25T00:31:43+00:00" + }, + { + "name": "wp-cli/maintenance-mode-command", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/maintenance-mode-command.git", + "reference": "db4671c14ea4c0c42f423a09cf8e9303778bb1a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/maintenance-mode-command/zipball/db4671c14ea4c0c42f423a09cf8e9303778bb1a4", + "reference": "db4671c14ea4c0c42f423a09cf8e9303778bb1a4", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "^2" + }, + "require-dev": { + "wp-cli/wp-cli-tests": "^2.1" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "bundled": true, + "commands": [ + "maintenance-mode", + "maintenance-mode activate", + "maintenance-mode deactivate", + "maintenance-mode status", + "maintenance-mode is-active" + ] + }, + "autoload": { + "psr-4": { + "WP_CLI\\MaintenanceMode\\": "src/" + }, + "files": [ + "maintenance-mode-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thrijith Thankachan", + "email": "thrijith13@gmail.com", + "homepage": "https://thrijith.com" + } + ], + "description": "Activates, deactivates or checks the status of the maintenance mode of a site.", + "homepage": "https://github.com/wp-cli/maintenance-mode-command", + "time": "2019-04-19T15:37:30+00:00" }, { "name": "wp-cli/media-command", - "version": "v1.1.4", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/media-command.git", - "reference": "7f8664ba722505446b3ef3dbc6717e8e7f20265c" + "reference": "68e2402dcef11ae10e8902cf93a1d370db07ed78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/media-command/zipball/7f8664ba722505446b3ef3dbc6717e8e7f20265c", - "reference": "7f8664ba722505446b3ef3dbc6717e8e7f20265c", + "url": "https://api.github.com/repos/wp-cli/media-command/zipball/68e2402dcef11ae10e8902cf93a1d370db07ed78", + "reference": "68e2402dcef11ae10e8902cf93a1d370db07ed78", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4871,7 +5333,7 @@ ], "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.", "homepage": "https://github.com/wp-cli/media-command", - "time": "2018-01-29T02:17:56+00:00" + "time": "2019-04-21T04:50:58+00:00" }, { "name": "wp-cli/mustangostang-spyc", @@ -4923,29 +5385,31 @@ }, { "name": "wp-cli/package-command", - "version": "v1.0.14", + "version": "v2.0.5", "source": { "type": "git", "url": "https://github.com/wp-cli/package-command.git", - "reference": "a7ce916de5e1d0c3d910d4fc8ca31928ee3775d3" + "reference": "52fea16f3cec0577b9c417a19ebc0f328c38d853" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/package-command/zipball/a7ce916de5e1d0c3d910d4fc8ca31928ee3775d3", - "reference": "a7ce916de5e1d0c3d910d4fc8ca31928ee3775d3", + "url": "https://api.github.com/repos/wp-cli/package-command/zipball/52fea16f3cec0577b9c417a19ebc0f328c38d853", + "reference": "52fea16f3cec0577b9c417a19ebc0f328c38d853", "shasum": "" }, "require": { - "composer/composer": "^1.2.0" + "composer/composer": ">=1.2.0 <1.7.0 || ^1.7.1", + "ext-json": "*", + "wp-cli/wp-cli": "^2.1" }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/scaffold-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -4978,7 +5442,7 @@ ], "description": "Lists, installs, and removes WP-CLI packages.", "homepage": "https://github.com/wp-cli/package-command", - "time": "2018-05-28T11:40:24+00:00" + "time": "2019-04-24T09:34:35+00:00" }, { "name": "wp-cli/php-cli-tools", @@ -5032,34 +5496,37 @@ }, { "name": "wp-cli/rewrite-command", - "version": "v1.0.5", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/rewrite-command.git", - "reference": "6b1695887e289ffad14c8f4ea86b5f1d92757408" + "reference": "eb8cbcf9c1c874a09b50257a0e588c31f29df597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/6b1695887e289ffad14c8f4ea86b5f1d92757408", - "reference": "6b1695887e289ffad14c8f4ea86b5f1d92757408", + "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/eb8cbcf9c1c874a09b50257a0e588c31f29df597", + "reference": "eb8cbcf9c1c874a09b50257a0e588c31f29df597", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "rewrite", "rewrite flush", "rewrite list", "rewrite structure" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5082,31 +5549,34 @@ ], "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.", "homepage": "https://github.com/wp-cli/rewrite-command", - "time": "2017-12-08T17:51:04+00:00" + "time": "2019-04-25T00:32:04+00:00" }, { "name": "wp-cli/role-command", - "version": "v1.1.0", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/role-command.git", - "reference": "f50134ea9c27c108b1069cf044f7395c8f9bf716" + "reference": "c6071d06d64c165588734b0d1c96f5c3dfa75736" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/role-command/zipball/f50134ea9c27c108b1069cf044f7395c8f9bf716", - "reference": "f50134ea9c27c108b1069cf044f7395c8f9bf716", + "url": "https://api.github.com/repos/wp-cli/role-command/zipball/c6071d06d64c165588734b0d1c96f5c3dfa75736", + "reference": "c6071d06d64c165588734b0d1c96f5c3dfa75736", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "role", "role create", @@ -5118,8 +5588,7 @@ "cap add", "cap list", "cap remove" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5142,35 +5611,38 @@ ], "description": "Adds, removes, lists, and resets roles and capabilities.", "homepage": "https://github.com/wp-cli/role-command", - "time": "2018-04-20T08:05:51+00:00" + "time": "2019-04-25T00:32:18+00:00" }, { "name": "wp-cli/scaffold-command", - "version": "v1.2.0", + "version": "v2.0.6", "source": { "type": "git", "url": "https://github.com/wp-cli/scaffold-command.git", - "reference": "a897a54ba0a8199743d90204ff773b302fc77572" + "reference": "9c6450e9ccf2d032913fced69f3188bc8ec4e3e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/a897a54ba0a8199743d90204ff773b302fc77572", - "reference": "a897a54ba0a8199743d90204ff773b302fc77572", + "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/9c6450e9ccf2d032913fced69f3188bc8ec4e3e6", + "reference": "9c6450e9ccf2d032913fced69f3188bc8ec4e3e6", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ "scaffold", - "scaffold _s", + "scaffold underscores", "scaffold block", "scaffold child-theme", "scaffold plugin", @@ -5201,30 +5673,35 @@ ], "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.", "homepage": "https://github.com/wp-cli/scaffold-command", - "time": "2018-07-29T15:02:24+00:00" + "time": "2019-04-25T00:44:34+00:00" }, { "name": "wp-cli/search-replace-command", - "version": "v1.3.1", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/search-replace-command.git", - "reference": "be21639dc530ad6506664baa813862d39b6d78ba" + "reference": "7d02c54facf039577ff13c7b7bb100e4757d85fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/be21639dc530ad6506664baa813862d39b6d78ba", - "reference": "be21639dc530ad6506664baa813862d39b6d78ba", + "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/7d02c54facf039577ff13c7b7bb100e4757d85fd", + "reference": "7d02c54facf039577ff13c7b7bb100e4757d85fd", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "^1.5" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, "bundled": true, "commands": [ @@ -5252,37 +5729,37 @@ ], "description": "Searches/replaces strings in the database.", "homepage": "https://github.com/wp-cli/search-replace-command", - "time": "2018-05-29T10:21:19+00:00" + "time": "2019-04-25T00:32:46+00:00" }, { "name": "wp-cli/server-command", - "version": "v1.0.9", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/server-command.git", - "reference": "6192e6d7becd07e4c11a8f1560655c73a3b3526a" + "reference": "c900a1036c29991420296b66a14ed771245c61a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/server-command/zipball/6192e6d7becd07e4c11a8f1560655c73a3b3526a", - "reference": "6192e6d7becd07e4c11a8f1560655c73a3b3526a", + "url": "https://api.github.com/repos/wp-cli/server-command/zipball/c900a1036c29991420296b66a14ed771245c61a2", + "reference": "c900a1036c29991420296b66a14ed771245c61a2", "shasum": "" }, "require": { - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5" + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "server" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5305,37 +5782,37 @@ ], "description": "Launches PHP's built-in web server for a specific WordPress installation.", "homepage": "https://github.com/wp-cli/server-command", - "time": "2017-12-14T20:06:24+00:00" + "time": "2019-04-21T09:58:15+00:00" }, { "name": "wp-cli/shell-command", - "version": "v1.0.5", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/wp-cli/shell-command.git", - "reference": "507603a8994d984b6c4d5bd26e31ede6d9cce37e" + "reference": "56f0ff1bc36f6da2fb73cb932214adcde58270d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/507603a8994d984b6c4d5bd26e31ede6d9cce37e", - "reference": "507603a8994d984b6c4d5bd26e31ede6d9cce37e", + "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/56f0ff1bc36f6da2fb73cb932214adcde58270d8", + "reference": "56f0ff1bc36f6da2fb73cb932214adcde58270d8", "shasum": "" }, "require": { - "wp-cli/wp-cli": "*" + "wp-cli/wp-cli": "^2" }, "require-dev": { - "behat/behat": "~2.5" + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "shell" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5359,38 +5836,41 @@ ], "description": "Opens an interactive PHP console for running and testing PHP code.", "homepage": "https://github.com/wp-cli/shell-command", - "time": "2017-12-08T16:03:53+00:00" + "time": "2019-04-22T13:16:49+00:00" }, { "name": "wp-cli/super-admin-command", - "version": "v1.0.6", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/super-admin-command.git", - "reference": "2982d2e6514dbb318561d72d0577746a3a37181e" + "reference": "bd1543c9a3360d0e21d7e00e1c597964bd805d7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/2982d2e6514dbb318561d72d0577746a3a37181e", - "reference": "2982d2e6514dbb318561d72d0577746a3a37181e", + "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/bd1543c9a3360d0e21d7e00e1c597964bd805d7c", + "reference": "bd1543c9a3360d0e21d7e00e1c597964bd805d7c", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/entity-command": "^1.3 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "super-admin", "super-admin add", "super-admin list", "super-admin remove" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5413,31 +5893,35 @@ ], "description": "Lists, adds, or removes super admin users on a multisite installation.", "homepage": "https://github.com/wp-cli/super-admin-command", - "time": "2017-12-08T17:43:53+00:00" + "time": "2019-04-20T20:47:36+00:00" }, { "name": "wp-cli/widget-command", - "version": "v1.0.5", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/wp-cli/widget-command.git", - "reference": "657e0f77d80c892f8f72f90a3a25112c254386df" + "reference": "58a1b2d2221cee852eb8a589535aaadb1217bb74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/657e0f77d80c892f8f72f90a3a25112c254386df", - "reference": "657e0f77d80c892f8f72f90a3a25112c254386df", + "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/58a1b2d2221cee852eb8a589535aaadb1217bb74", + "reference": "58a1b2d2221cee852eb8a589535aaadb1217bb74", "shasum": "" }, + "require": { + "wp-cli/wp-cli": "^2" + }, "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" + "wp-cli/extension-command": "^1.2 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "type": "wp-cli-package", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" }, + "bundled": true, "commands": [ "widget", "widget add", @@ -5449,8 +5933,7 @@ "widget update", "sidebar", "sidebar list" - ], - "bundled": true + ] }, "autoload": { "psr-4": { @@ -5473,113 +5956,137 @@ ], "description": "Adds, moves, and removes widgets; lists sidebars.", "homepage": "https://github.com/wp-cli/widget-command", - "time": "2017-12-08T17:45:57+00:00" + "time": "2019-04-25T00:25:21+00:00" }, { "name": "wp-cli/wp-cli", - "version": "v1.5.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/wp-cli/wp-cli.git", - "reference": "3aac73bc4d629372531f3e15bbb67945d19b5d5a" + "reference": "193f08f48585326bc1f1648349201531eeda2ee5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/3aac73bc4d629372531f3e15bbb67945d19b5d5a", - "reference": "3aac73bc4d629372531f3e15bbb67945d19b5d5a", + "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/193f08f48585326bc1f1648349201531eeda2ee5", + "reference": "193f08f48585326bc1f1648349201531eeda2ee5", "shasum": "" }, "require": { - "composer/composer": "^1.2.0", - "composer/semver": "~1.0", - "justinrainbow/json-schema": "~5.2.5", + "ext-curl": "*", "mustache/mustache": "~2.4", - "php": ">=5.3.29", - "ramsey/array_column": "~1.1", + "php": "^5.4 || ^7.0", "rmccue/requests": "~1.6", - "symfony/config": "^2.7|^3.0", - "symfony/console": "^2.7|^3.0", - "symfony/debug": "^2.7|^3.0", - "symfony/dependency-injection": "^2.7|^3.0", - "symfony/event-dispatcher": "^2.7|^3.0", - "symfony/filesystem": "^2.7|^3.0", - "symfony/finder": "^2.7|^3.0", - "symfony/process": "^2.1|^3.0", - "symfony/translation": "^2.7|^3.0", - "symfony/yaml": "^2.7|^3.0", - "wp-cli/autoload-splitter": "^0.1.5", - "wp-cli/cache-command": "^1.0", - "wp-cli/checksum-command": "^1.0", - "wp-cli/config-command": "^1.0", - "wp-cli/core-command": "^1.0", - "wp-cli/cron-command": "^1.0", - "wp-cli/db-command": "^1.0", - "wp-cli/embed-command": "^1.0", - "wp-cli/entity-command": "^1.0", - "wp-cli/eval-command": "^1.0", - "wp-cli/export-command": "^1.0", - "wp-cli/extension-command": "^1.0", - "wp-cli/import-command": "^1.0", - "wp-cli/language-command": "^1.0", - "wp-cli/media-command": "^1.0", + "symfony/finder": ">2.7", "wp-cli/mustangostang-spyc": "^0.6.3", - "wp-cli/package-command": "^1.0", - "wp-cli/php-cli-tools": "~0.11.2", - "wp-cli/rewrite-command": "^1.0", - "wp-cli/role-command": "^1.0", - "wp-cli/scaffold-command": "^1.0", - "wp-cli/search-replace-command": "^1.0", - "wp-cli/server-command": "^1.0", - "wp-cli/shell-command": "^1.0", - "wp-cli/super-admin-command": "^1.0", - "wp-cli/widget-command": "^1.0" + "wp-cli/php-cli-tools": "~0.11.2" }, "require-dev": { - "behat/behat": "2.5.*", - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3", - "phpunit/phpunit": "3.7.*", "roave/security-advisories": "dev-master", - "wimg/php-compatibility": "^8.0", - "wp-coding-standards/wpcs": "^0.13.1" + "wp-cli/db-command": "^1.3 || ^2", + "wp-cli/entity-command": "^1.2 || ^2", + "wp-cli/extension-command": "^1.1 || ^2", + "wp-cli/package-command": "^1 || ^2", + "wp-cli/wp-cli-tests": "^2.1" }, "suggest": { - "psy/psysh": "Enhanced `wp shell` functionality" + "ext-readline": "Include for a better --prompt implementation", + "ext-zip": "Needed to support extraction of ZIP archives when doing downloads or updates" }, "bin": [ - "bin/wp.bat", - "bin/wp" + "bin/wp", + "bin/wp.bat" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5.x-dev" - }, - "autoload-splitter": { - "splitter-logic": "WP_CLI\\AutoloadSplitter", - "splitter-location": "php/WP_CLI/AutoloadSplitter.php", - "split-target-prefix-true": "autoload_commands", - "split-target-prefix-false": "autoload_framework" + "dev-master": "2.1.x-dev" } }, "autoload": { "psr-0": { "WP_CLI": "php" - }, - "psr-4": { - "": "php/commands/src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The command line interface for WordPress", + "description": "WP-CLI framework", + "homepage": "https://wp-cli.org", + "keywords": [ + "cli", + "wordpress" + ], + "time": "2019-04-25T05:38:33+00:00" + }, + { + "name": "wp-cli/wp-cli-bundle", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/wp-cli-bundle.git", + "reference": "ddf9a236ef0d85fcc5336f8c87cebe0dd62ee81f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/wp-cli-bundle/zipball/ddf9a236ef0d85fcc5336f8c87cebe0dd62ee81f", + "reference": "ddf9a236ef0d85fcc5336f8c87cebe0dd62ee81f", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "wp-cli/cache-command": "^2", + "wp-cli/checksum-command": "^2", + "wp-cli/config-command": "^2", + "wp-cli/core-command": "^2", + "wp-cli/cron-command": "^2", + "wp-cli/db-command": "^2", + "wp-cli/embed-command": "^2", + "wp-cli/entity-command": "^2", + "wp-cli/eval-command": "^2", + "wp-cli/export-command": "^2", + "wp-cli/extension-command": "^2", + "wp-cli/i18n-command": "^2", + "wp-cli/import-command": "^2", + "wp-cli/language-command": "^2", + "wp-cli/maintenance-mode-command": "^2", + "wp-cli/media-command": "^2", + "wp-cli/package-command": "^2", + "wp-cli/rewrite-command": "^2", + "wp-cli/role-command": "^2", + "wp-cli/scaffold-command": "^2", + "wp-cli/search-replace-command": "^2", + "wp-cli/server-command": "^2", + "wp-cli/shell-command": "^2", + "wp-cli/super-admin-command": "^2", + "wp-cli/widget-command": "^2", + "wp-cli/wp-cli": "^2.2" + }, + "require-dev": { + "roave/security-advisories": "dev-master", + "wp-cli/wp-cli-tests": "^2.1" + }, + "suggest": { + "psy/psysh": "Enhanced `wp shell` functionality" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "WP-CLI bundle package with default commands.", "homepage": "https://wp-cli.org", "keywords": [ "cli", "wordpress" ], - "time": "2018-05-31T11:04:05+00:00" + "time": "2019-04-25T06:30:44+00:00" }, { "name": "wp-cli/wp-config-transformer", @@ -5629,10 +6136,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "~7.1" + "php": ">=7.2 <7.4" }, - "platform-dev": [], - "platform-overrides": { - "php": "7.1" - } + "platform-dev": [] } diff --git a/docs/changelog.md b/docs/changelog.md index 4b818bdb..0c74155c 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -3,6 +3,35 @@ description: WordHat project news and changelog WordHat does not yet support WordPress' new content editor (Gutenberg). The step definitions for creating content assume, and only work with, the classic WordPress editor. +## [3.3.0] - 2019-06-24 +### Added +- Suport for translations. + +### Changed +- WordHat now requires PHP 7.2+. There are no code changes at this point, so WordHat is still technically compatible with PHP 7.1. +- `ChromeDriver` is now the default suggested option, instead of a browser via Selenium. +- CI: use `ChromeDriver` instead of a browser via Selenium. +- Docs: general updates/corrections. + +### Fixed +- Drivers, WP-PHP: fix PHP notice when creating a user. +- Contexts, Content: fix inserting text into visual editor iframe for non-Selenium webdrivers. + +## [3.2.0] - 2019-06-05 +### Added +- CI: Run build checks on Travis-CI. + +### Changed +- Composer: update dependencies to latest constrained versions (#244). +- Composer, Dev Packages: switch `wp-cli` package to `wp-cli-bundle`. +- Mink: restart browser between scenarios instead of resetting (#245). +- Contexts, User: tick "remember me" when a user logs-in to WordPress (#245). + +### Fixed +- Update WordHat's internal tests for compatibility with recent versions of WordPress! +- Contexts, User: attempts made to improve intermittent failures with the log-in action (#47, #245). +- Drivers, WP-CLI: allow use of `page_template` when creating content (#239). + ## [3.1.2] - 2019-04-02 ### Fixed - Contexts, User: fix errors and exceptions caused by trying to log-out before a browser is open. @@ -215,6 +244,8 @@ WordHat does not yet support WordPress' new content editor (Gutenberg). The step ### Added - First working version of basic architecture. +[3.3.0]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.2.0...v3.3.0 +[3.2.0]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.1.2...v3.2.0 [3.1.2]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.1.1...v3.1.2 [3.1.1]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.1.0...v3.1.1 [3.1.0]: https://github.com/paulgibbs/behat-wordpress-extension/compare/v3.0.0...v3.1.0 diff --git a/docs/contributing/build.md b/docs/contributing/build.md deleted file mode 100644 index f86fbca5..00000000 --- a/docs/contributing/build.md +++ /dev/null @@ -1,60 +0,0 @@ -description: Wordhat project information about build and continuous integration processes -# The build process and continuous integration - -There are two styles of build which WordHat uses. One is a native build where WordHat, Wordpress, Selenium and other tools are run directly on the native platform. The other is a docker build where docker containers are used to host Wordhat, Wordpress, Selenium and Mysql. - -## Making it work locally. - -The first thing you need to do is to [install](https://www.docker.com/get-docker) Docker. It is highly recommended that if you're on windows, you use [Docker Toolbox](https://download.docker.com/win/stable/DockerToolbox.exe) as its support for linux containers is significantly better than the Windows native docker. We'll keep trying it, and if that changes we'll update this page. - -Once you have docker installed, (and if you're running docker toolbox you've spun up a Docker terminal); simply clone the wordhat source, run `composer install` and then `vendor/bin/phing` and you'll be laughing. - - -## Making it work natively locally - -So maybe you've already got a wordpress installation locally that you'd like to use, and its running in a local webserver. That's cool - this is how to do it. You'll also need to set up your own Selenium server if you want to run the javascript tests. Firstly you'll need to create a file called `build/properties/local.yml`. Give it contents which are similar to the below, only with the values tweaked to suit your environemnt. - -```yaml -wordhat: - base-url: http://localhost:8080 - wd-host: localhost:4444/wd/hub - wp-cli-binary: c:\projects\wordhat\vendor\bin\wp - wp-path: c:\inetpub\wwwroot - db-restore: true - driver: wpcli -``` - -Once you've done that, do a `composer install` followed by `vendor/bin/phing -Dwordhat.runstyle=native -Dwordhat.ci-engine=local` and you should be laughing. - -## Helpful Phings - -We use phing to glue together all the tools we use to develop WordHat. We've only just got it set up, so if you find issues please do let us know either by raising an issue on GitHub or by jumping on our slack channel. Even though its early days, we've got some cool stuff setup to help you debug your WordHat contributions. - -### Docker tricks - -Firstly if your Docker run fails, we don't automatically clear up. This means the containers are all still there for you to inspect. If you'd like to get to a shell on the WordHat (which is also the WordPress) container, then simply run this command: - -``` -docker exec -it docker_wordpress_1 "/bin/bash" -``` - -If you need a root shell, then this command will do it: - -``` -docker exec -u root -it docker_wordpress_1 "/bin/bash" -``` - -If you'd like to set off another test run then: - -``` -docker exec -it docker_wordpress_1 "vendor/bin/phing behat:exec-tests" -``` - -And finally, when you've finished diagnosing, run: - -``` -vendor/bin/phing docker:stop docker:cleanup -``` - -and all the containers will be tidied away and their persistent storage deleted. - diff --git a/docs/features/overview.md b/docs/features/overview.md index 3fb864ee..d1c6cbad 100644 --- a/docs/features/overview.md +++ b/docs/features/overview.md @@ -5,7 +5,7 @@ WordHat provides WordPress-specific functionality for common testing scenarios t For convenience, our `behat.yml.dist` configuration template loads all of our contexts by default, though Behat does support [more complex configuration](http://behat.org/en/latest/user_guide/configuration/suites.html) for advanced use cases. -To find out which step definitions are available for your tests, run `vendor/bin/behat -dl` in your terminal. +To find out which step definitions are available for your tests, run `vendor/bin/behat --definitions i` in your terminal. ## Drivers @@ -45,7 +45,7 @@ The `SiteContext` context provides step definitions for activating/deactivating ### TinyMCE -The `EditPost` context provides step definitions to manage editing and creating content within wp-admin. +The `EditPost` context provides step definitions to manage editing and creating content within wp-admin. At time of writing, no support is yet provided for Gutenberg. ### Toolbar diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index e3231bd4..240e0f77 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -3,9 +3,9 @@ description: How to get install Behat, WordPress, and WordHat ## Requirements -WordHat requires [PHP](https://php.net/) (version 7.1+), [Composer](https://getcomposer.org/), and a [WordPress](https://wordpress.org/) site to test (version 4.8+). +WordHat requires [PHP](https://php.net/) (version 7.2+), [Composer](https://getcomposer.org/), and a [WordPress](https://wordpress.org/) site to test (version 4.8+). -We strongly recommend using [WP-CLI](https://wp-cli.org/)[^1] \(version 1.3.0+), and [Selenium](http://www.seleniumhq.org/)[^2] to help with browser automation. Selenium is fiddly to set up, so we recommend using [vvo/selenium-standalone](https://github.com/vvo/selenium-standalone#command-line-interface), which requires the [Java Platform JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). +We recommend using [WP-CLI](https://wp-cli.org/)[^1] \(version 2.1.0+). ## Installation @@ -18,7 +18,7 @@ cd project
composer require --dev paulgibbs/behat-wordpress-extension behat/mink-goutte-driver behat/mink-selenium2-driver
+ composer require --dev paulgibbs/behat-wordpress-extension behat/mink-goutte-driver dmore/behat-chrome-extension
project
folder and rename it:
@@ -41,7 +41,7 @@ cd project
vendor/bin/behat -dl
+ vendor/bin/behat --definitions i
If it worked, you will see a list of text that looks a little like the following (but much longer):
Given I am an anonymous user
Given I am not logged in
@@ -60,6 +60,3 @@ Now that you have WordHat set up, we recommend reading our [introduction to Beha
[^1]:
The WP-CLI executable *must* be named `wp` and be within your system's $PATH.
-
-[^2]:
- Selenium is recommended for testing websites that require Javascript. Behat requires the [Mink Selenium2 library](https://packagist.org/packages/behat/mink-selenium2-driver), which we include in the installation instructions above.
diff --git a/docs/getting-started/wordhat-intro.md b/docs/getting-started/wordhat-intro.md
index 7902e2d1..60df19b2 100644
--- a/docs/getting-started/wordhat-intro.md
+++ b/docs/getting-started/wordhat-intro.md
@@ -10,7 +10,7 @@ Otherwise, if you are unsure how to proceed, first check the [FAQ](/recipes/faq.
One of the fun things about using Behat is seeing it control your web browser and navigating your site. Behat relies on a library called [Mink](http://mink.behat.org/en/latest/) to interface with your web browser. Mink has its own driver system, with [each driver supporting a different combination of browser features](http://mink.behat.org/en/latest/guides/drivers.html#driver-feature-support).
-Some Mink drivers run headless web browsers (e.g. Goutte), and these tend to be the fastest, though notably, most do not support Javascript. WordHat's sample configuration file is configured to use [Selenium](http://www.seleniumhq.org/), which supports a broad range of browser features for most use cases. Selenium is fiddly to set up, so we recommend using [vvo/selenium-standalone](https://github.com/vvo/selenium-standalone#command-line-interface).
+Some Mink drivers run headless web browsers (e.g. Goutte), and these tend to be the fastest, though notably, most do not support Javascript. WordHat's sample configuration file is configured to use Google Chrome by default, which supports a broad range of browser features for most use cases.
For tests requiring Javascript interactions, mark the scenario or feature with the `@javascript` [tag](http://behat.org/en/latest/user_guide/organizing.html#tags).
diff --git a/docs/recipes/faq.md b/docs/recipes/faq.md
index 9c561d88..de845397 100644
--- a/docs/recipes/faq.md
+++ b/docs/recipes/faq.md
@@ -4,7 +4,7 @@ description: WordHat frequently asked questions and answers
If you are new to the project or Behat, we recommend that you first [read through our documentation](https://wordhat.info/). For any questions, feedback, or to contribute, you can get in contact with us via Github or our [Slack](https://wordhat.herokuapp.com).
## Browsers
-* If you are using [Selenium](http://docs.seleniumhq.org/download/) to run Javascript tests, and you access your WordPress site over HTTPS, *and* it has a self-signed certificate, you will need to manually configure the web browser to accept that certificate.
+* If you are using [Selenium](http://docs.seleniumhq.org/download/) to run Javascript tests, and you access your WordPress site over HTTPS, *and* your site is using a self-signed HTTPS certificate, you will need to manually configure the web browser to accept that certificate.
## Drivers
* If you are using the WP-CLI driver to [connect to a remote WordPress site over SSH](https://make.wordpress.org/cli/handbook/running-commands-remotely/), WordHat assumes the remote server is Linux-like, with a shell that provides [GNU Coreutils](https://www.gnu.org/software/coreutils/coreutils.html).
@@ -13,13 +13,14 @@ If you are new to the project or Behat, we recommend that you first [read throug
## Selenium
* On a Mac, Selenium is incompatible with the default Apple Java; error messages look like "Unsupported major.minor version 52.0". To fix, install [Oracle Java Platform JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html).
-* With Selenium, some environments may require a "webdriver"; error messages may refer to "GeckoWebDriver" or "ChromeWebDriver", etc. Good solutions include [vvo/selenium-standalone](https://github.com/vvo/selenium-standalone#command-line-interface) or [joomla-projects/selenium-server-standalone](https://github.com/joomla-projects/selenium-server-standalone).
+* Selenium is fiddly to set up, so we recommend using [vvo/selenium-standalone](https://github.com/vvo/selenium-standalone#command-line-interface) to install and run it.
## Supported platforms
-* WordHat supports MacOS, most flavours of Linux, and Windows. We use [Travis-CI](https://travis-ci.org/paulgibbs/behat-wordpress-extension) and [Appveyor](https://ci.appveyor.com/project/PaulGibbs/behat-wordpress-extension) to test on Ubuntu and Windows, respectively, and require modern versions of PHP.
+* WordHat supports MacOS, most flavours of Linux, and Windows. We use [Travis-CI](https://travis-ci.org/paulgibbs/behat-wordpress-extension) to test on Ubuntu, and require modern versions of PHP.
## Virtual machines (Vagrant)
* If you are using a Vagrant-powered virtual machine to run Behat via the [WP-CLI driver](../features/overview.html#wp-cli), you will need to `vagrant ssh` into the box once. This will set up password-less authentication; otherwise, WordHat will prompt you for the SSH password frequently.
+* If you are using the WP-CLI driver to [connect to a Vagrant-powered WordPress site over SSH](https://make.wordpress.org/cli/handbook/running-commands-remotely/), you will probably have better performance by switching to use the WP-PHP driver. This is because [WP-CLI is slow at opening SSH connections to Vagrant boxes](https://github.com/wp-cli/wp-cli/pull/5235).
## WordPress
-* If your WordPress is installed in a subdirectory, you need to set the `site_url` option to the value of the "WordPress address (URL)" option (found in WordPress > Settings > General). For more information, [consult the WordHat documentation](/configuration/settings.md).
+* If your WordPress is installed in a subdirectory, you need to set the `site_url` option to the value of the "WordPress address (URL)" option (found in WordPress > Settings > General). For more information, [consult the WordHat documentation](/configuration/settings.html).
diff --git a/features/toolbar.feature b/features/toolbar.feature
index 1db48649..cf19e9b7 100644
--- a/features/toolbar.feature
+++ b/features/toolbar.feature
@@ -9,7 +9,7 @@ Feature: Toolbar
And I am on the homepage
Scenario: I can go to the support forums
- When I follow the toolbar link "WordPress > Support Forums"
+ When I follow the toolbar link "WordPress > Support"
Then I should be on "https://wordpress.org/support/"
Scenario: I can add a new page
diff --git a/i18n/template.xliff b/i18n/template.xliff
new file mode 100644
index 00000000..fbacb4a4
--- /dev/null
+++ b/i18n/template.xliff
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mkdocs.yml b/mkdocs.yml
index 4cf351bc..8651ad3e 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -87,7 +87,6 @@ nav:
- Errors W800-899: recipes/errors/w800-899.md
- Open Source:
- Contributing: contributing/open-source.md
- - Build Process: contributing/build.md
- Credits: credits.md
- License: license.md
- News: changelog.md
diff --git a/readme.md b/readme.md
index 4d3fafcd..eccdf925 100644
--- a/readme.md
+++ b/readme.md
@@ -1,6 +1,6 @@
# WordHat: Behat for WordPress
-WordHat is an integration layer between [Behat](http://behat.org), [Mink](https://github.com/Behat/MinkExtension), and [WordPress](https://wordpress.org). It provides WordPress-specific functionality for common testing scenarios specific to WordPress sites.
+WordHat is a [Behat](http://behat.org) extension for [WordPress](https://wordpress.org). It provides WordPress-specific functionality for common testing scenarios specific to WordPress sites.
[![Build Status on Travis-CI](https://travis-ci.com/paulgibbs/behat-wordpress-extension.svg?branch=master)](https://travis-ci.com/paulgibbs/behat-wordpress-extension)
[![Latest Stable Version](https://poser.pugx.org/paulgibbs/behat-wordpress-extension/v/stable.svg)](https://packagist.org/packages/paulgibbs/behat-wordpress-extension)
diff --git a/scripts/extract-translations.sh b/scripts/extract-translations.sh
new file mode 100755
index 00000000..7573d95c
--- /dev/null
+++ b/scripts/extract-translations.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+IFS=$'\n' BEHAT_STEPS=($(vendor/bin/behat --definitions l --no-colors))
+XLIFF_OUTPUT=template.xliff
+
+# Replace all non-alnum characters with a hypen.
+function sanitise() {
+ local name="$1"
+ name="${name//[^[:alnum:]]/-}"
+
+ # Convert to lowercase, strip repeated hypens.
+ echo "$name" | tr -s '[:upper:]' '[:lower:]' | tr -s '-'
+}
+
+# Header.
+(cat <
+
+
+
+TEMPLATE
+) > $XLIFF_OUTPUT
+
+# Translation strings.
+for STEP in "${BEHAT_STEPS[@]}"; do
+ # Remove "default | | from step definition.
+ STEP=${STEP##*| }
+ STEP_ID=$(sanitise $STEP)
+
+ (cat <
+
+
+
+TEMPLATE
+) >> $XLIFF_OUTPUT
+done
+
+# Footer.
+(cat <
+
+
+TEMPLATE
+) >> $XLIFF_OUTPUT
+
+echo "Done!"
diff --git a/src/Context/RawWordpressContext.php b/src/Context/RawWordpressContext.php
index e6a1c262..3bf820a9 100644
--- a/src/Context/RawWordpressContext.php
+++ b/src/Context/RawWordpressContext.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
namespace PaulGibbs\WordpressBehatExtension\Context;
+use Behat\Behat\Context;
use Behat\MinkExtension\Context\RawMinkContext;
use PaulGibbs\WordpressBehatExtension\WordpressDriverManager;
use PaulGibbs\WordpressBehatExtension\Context\Traits\PageObjectAwareContextTrait;
@@ -13,7 +14,7 @@
*
* Does not contain any step defintions.
*/
-class RawWordpressContext extends RawMinkContext implements WordpressAwareInterface, PageObjectAware
+class RawWordpressContext extends RawMinkContext implements WordpressAwareInterface, PageObjectAware, Context\TranslatableContext
{
use PageObjectAwareContextTrait;
@@ -135,7 +136,7 @@ public function getDriver(string $name = ''): DriverInterface
*/
public function resetBrowser()
{
- $this->getSession()->reset();
+ $this->getSession()->stop();
}
/**
@@ -158,4 +159,14 @@ public function getRandomString(int $length = 64): string
return $random;
}
+
+ /**
+ * Return translation resource paths.
+ *
+ * @return string[] Path to translations.
+ */
+ public static function getTranslationResources()
+ {
+ return glob(__DIR__ . '/../../i18n/*.xliff');
+ }
}
diff --git a/src/Context/Traits/FilesystemAwareContextTrait.php b/src/Context/Traits/FilesystemAwareContextTrait.php
new file mode 100644
index 00000000..cd88cd4a
--- /dev/null
+++ b/src/Context/Traits/FilesystemAwareContextTrait.php
@@ -0,0 +1,21 @@
+getDriver()->filesystem->deleteFile($abspath);
+ }
+}
diff --git a/src/Context/Traits/UserAwareContextTrait.php b/src/Context/Traits/UserAwareContextTrait.php
index ecfee3f9..4bde464a 100644
--- a/src/Context/Traits/UserAwareContextTrait.php
+++ b/src/Context/Traits/UserAwareContextTrait.php
@@ -48,19 +48,22 @@ public function logIn(string $username, string $password, string $redirect_to =
$this->logOut();
}
- // Start a session.
$session = $this->getSession();
- // Go to the login form.
+ /*
+ * Ensure log-in page is not the first loaded page in the session. We believe
+ * this to be a cause of form field manipulation intermittently failng, causing
+ * the log-in step to fail -- as "Given I am logged in as a user" is often the
+ * the first line in a scenario!
+ *
+ * See https://github.com/Behat/MinkExtension/issues/286
+ */
+ $this->visitPath('/');
$this->visitPath('wp-login.php?redirect_to=' . urlencode($this->locatePath($redirect_to)));
- // Fill in username.
$this->login_page->setUserName($username);
-
- // Fill in password.
$this->login_page->setUserPassword($password);
-
- // Submit the login form.
+ $this->login_page->setRememberMe();
$this->login_page->submitLoginForm();
if (! $this->loggedIn()) {
diff --git a/src/Context/WordpressContext.php b/src/Context/WordpressContext.php
index d449125d..f5057b48 100644
--- a/src/Context/WordpressContext.php
+++ b/src/Context/WordpressContext.php
@@ -4,9 +4,11 @@
use Behat\Behat\Hook\Scope\AfterScenarioScope;
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
+use Behat\Behat\Event;
use Behat\Mink\Driver\Selenium2Driver;
use PaulGibbs\WordpressBehatExtension\Context\Traits\CacheAwareContextTrait;
use PaulGibbs\WordpressBehatExtension\Context\Traits\DatabaseAwareContextTrait;
+use PaulGibbs\WordpressBehatExtension\Context\Traits\FilesystemAwareContextTrait;
use PaulGibbs\WordpressBehatExtension\Context\Traits\PageObjectAwareContextTrait;
/**
@@ -14,7 +16,7 @@
*/
class WordpressContext extends RawWordpressContext
{
- use PageObjectAwareContextTrait, CacheAwareContextTrait, DatabaseAwareContextTrait;
+ use PageObjectAwareContextTrait, CacheAwareContextTrait, DatabaseAwareContextTrait, FilesystemAwareContextTrait;
/**
* Constructor.
@@ -45,7 +47,7 @@ public function maybeBackupDatabase(BeforeScenarioScope $scope)
* Otherwise, we would use the (static) BeforeSuiteScope hook.
*/
$backup_file = $this->getWordpress()->getSetting('database_backup_file');
- if ($backup_file) {
+ if (! empty($backup_file)) {
return;
}
@@ -55,6 +57,7 @@ public function maybeBackupDatabase(BeforeScenarioScope $scope)
// If the path specified is not a file, use it as the preferred folder to store a new backup.
if (! $file || ! is_file($file) || ! is_readable($file)) {
$file = $this->exportDatabase(['path' => $file]);
+ $this->getWordpress()->setSetting('built_database_backup', true);
}
// Note: $file may be either an absolute OR relative file path.
@@ -118,10 +121,35 @@ public function maybeRestoreDatabase(AfterScenarioScope $scope)
}
$file = $this->getWordpress()->getSetting('database_backup_file');
- if (! $file) {
+ if (empty($file)) {
return;
}
$this->importDatabase(['path' => $file]);
}
+
+ /**
+ * If WordHat created its own database dump, delete it after the test suite has completed.
+ *
+ * @AfterSuite @db
+ *
+ * @param Event\SuiteEvent $scope
+ */
+ public function maybeRemoveDatabaseDump(Event\SuiteEvent $event)
+ {
+ $delete_backup = $this->getWordpress()->getSetting('built_database_backup');
+ if ($delete_backup === null) {
+ return;
+ }
+
+ $file = $this->getWordpress()->getSetting('database_backup_file');
+ if (empty($file)) {
+ return;
+ }
+
+ $this->getWordpress()->setSetting('database_backup_file', null);
+ $this->getWordpress()->setSetting('built_database_backup', null);
+
+ $this->deleteFile($file);
+ }
}
diff --git a/src/Driver/Element/Wpcli/ContentElement.php b/src/Driver/Element/Wpcli/ContentElement.php
index b2651d6e..ef2e6830 100644
--- a/src/Driver/Element/Wpcli/ContentElement.php
+++ b/src/Driver/Element/Wpcli/ContentElement.php
@@ -50,7 +50,7 @@ public function create($args)
'ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title',
'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name',
'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type',
- 'guid', 'post_category',
+ 'guid', 'post_category', 'page_template',
),
$args
);
diff --git a/src/Driver/Element/Wpcli/FilesystemElement.php b/src/Driver/Element/Wpcli/FilesystemElement.php
new file mode 100644
index 00000000..fd4bddc9
--- /dev/null
+++ b/src/Driver/Element/Wpcli/FilesystemElement.php
@@ -0,0 +1,28 @@
+drivers->getDriver()->wpcli('eval', $delete_cmd, ['--skip-wordpress']);
+ }
+}
+
diff --git a/src/Driver/Element/Wpphp/FilesystemElement.php b/src/Driver/Element/Wpphp/FilesystemElement.php
new file mode 100644
index 00000000..b0392f13
--- /dev/null
+++ b/src/Driver/Element/Wpphp/FilesystemElement.php
@@ -0,0 +1,26 @@
+add_role($role);
}
- return $this->get($user);
+ return $this->get($user_id);
}
/**
diff --git a/src/PageObject/Element/TinyMCEEditor.php b/src/PageObject/Element/TinyMCEEditor.php
index 2426018e..8970ea6f 100644
--- a/src/PageObject/Element/TinyMCEEditor.php
+++ b/src/PageObject/Element/TinyMCEEditor.php
@@ -57,11 +57,9 @@ public function getMode(): string
public function setContent(string $content)
{
if (self::VISUAL === $this->getMode()) {
- $this->getDriver()->switchToIFrame(self::$wysiwyg_iframe_id);
$this->getDriver()->executeScript(
- ';document.body.innerHTML = \'' . addslashes(htmlspecialchars($content)) . '
\';'
+ ';document.getElementById(\'' . self::$wysiwyg_iframe_id . '\').contentDocument.body.innerHTML = \'' . addslashes(htmlspecialchars($content)) . '
\';'
);
- $this->getDriver()->switchToIFrame();
} else {
$this->fillField(self::$textarea_id, $content);
}
diff --git a/src/PageObject/LoginPage.php b/src/PageObject/LoginPage.php
index 0a936061..c73c3890 100644
--- a/src/PageObject/LoginPage.php
+++ b/src/PageObject/LoginPage.php
@@ -1,43 +1,37 @@
getSession();
+ $url = $session->getCurrentUrl();
- // Get the session.
- $session = $this->verifySession();
-
- // Get the url.
- $url = $session->getCurrentUrl();
-
- // If the login path isn't in the current URL.
if (false === strrpos($url, $this->path)) {
- // We aren't on the login screen.
throw new ExpectationException(
sprintf(
'Expected screen is the wp-login form, instead on "%1$s".',
@@ -47,22 +41,14 @@ protected function verifyLoginPage()
);
}
- // Get the page.
- $page = $session->getPage();
-
- // Login form CSS selector
- $login_form_selector = '#loginform';
-
- // Search for the login form exists.
- $login_form = $page->find('css', $login_form_selector);
+ $selector = '#loginform';
+ $login_form = $session->getPage()->find('css', $selector);
- // If the login form was not found.
if (null === $login_form) {
- // We aren't on the login screen.
throw new ExpectationException(
sprintf(
'Expected to find the login form with the selector "%1$s" at the current URL "%2$s".',
- $login_form_selector,
+ $selector,
$url
),
$this->getDriver()
@@ -71,174 +57,90 @@ protected function verifyLoginPage()
}
/**
- * Fills the user_login field of the login form with a given username.
+ * Fills the user_login field of the log-in form with a given username.
*
- * @param string $username the username to fill into the login form
+ * @param string $username the username to fill into the log-in form
*
- * @throws \Behat\Mink\Exception\ExpectationException
+ * @throws ExpectationException
*/
public function setUserName(string $username)
{
+ $session = $this->getSession();
+ $field = $session->getPage()->find('css', '#user_login');
- // Get the session.
- $session = $this->verifySession();
-
- // Verify we are on the login page.
- $this->verifyLoginPage();
-
- // Get the page.
- $page = $session->getPage();
-
- // Find the user_login field.
- $user_login_field = $page->find('css', '#user_login');
-
- // Try to focus the user_login field.
try {
- $user_login_field->focus();
+ $field->focus();
} catch (UnsupportedDriverActionException $e) {
// This will fail for GoutteDriver but neither is it necessary.
}
- // Set the value of $username in the user_login field.
- $user_login_field->setValue($username);
- // The field can be stubborn, so we use fillField also.
- $page->fillField('user_login', $username);
+ $field->setValue($username);
- // Attempt to fill the user_login field with JavaScript.
try {
- $session->executeScript(
- "document.getElementById('user_login').value='$username'"
- );
+ $session->executeScript("document.getElementById('user_login').value='$username'");
} catch (UnsupportedDriverActionException $e) {
- // This will fail for drivers without JavaScript support
- }
-
- // Get the actual value of the user_login field.
- $username_actual = $user_login_field->getValue();
-
- // Verify the username was filled in correctly.
- if ($username_actual !== $username) {
- throw new ExpectationException(
- sprintf(
- 'Expected the username field to be "%1$s", found "%2$s".',
- $username,
- $$username_actual
- ),
- $this->getDriver()
- );
+ // This will fail for drivers without JavaScript support.
}
}
/**
- * Fills the user_pass field of the login form with a given password.
+ * Fills the user_pass field of the log-in form with a given password.
*
- * @param string $password the password to fill into the login form
+ * @param string $password the password to fill into the log-in form
*
- * @throws \Behat\Mink\Exception\ExpectationException
+ * @throws ExpectationException
*/
public function setUserPassword(string $password)
{
+ $session = $this->getSession();
+ $field = $session->getPage()->find('css', '#user_pass');
- // Get the session.
- $session = $this->verifySession();
-
- // Verify we are on the login page.
- $this->verifyLoginPage();
-
- // Get the page.
- $page = $session->getPage();
-
- // Find the user_pass field.
- $user_pass_field = $page->find('css', '#user_pass');
-
- // Try to focus the user_pass field.
try {
- $user_pass_field->focus();
+ $field->focus();
} catch (UnsupportedDriverActionException $e) {
// This will fail for GoutteDriver but neither is it necessary.
}
- // Set the value of $password in the user_pass field.
- $user_pass_field->setValue($password);
- // The field can be stubborn, so we use fillField also.
- $page->fillField('user_pass', $password);
+ $field->setValue($password);
- // Attempt to fill the user_pass field with JavaScript.
try {
- $session->executeScript(
- "document.getElementById('user_pass').value='$password'"
- );
+ $session->executeScript("document.getElementById('user_pass').value='$password'");
} catch (UnsupportedDriverActionException $e) {
// This will fail for drivers without JavaScript support
}
-
- // Get the actual value of the user_pass field.
- $password_actual = $user_pass_field->getValue();
-
- // Verify the password was filled in correctly.
- if ($password_actual !== $password) {
- throw new ExpectationException(
- sprintf(
- 'Expected the password field to be "%1$s", found "%2$s".',
- $password,
- $$password_actual
- ),
- $this->getDriver()
- );
- }
}
/**
- * Submit the WordPress login form
+ * Mark the "remember me" input box on the log-in form.
*/
- public function submitLoginForm()
+ public function setRememberMe()
{
+ $session = $this->getSession();
+ $field = $session->getPage()->find('css', '#rememberme');
- // Get the session.
- $session = $this->verifySession();
-
- // Verify we are on the login page.
- $this->verifyLoginPage();
-
- // Get the page.
- $page = $session->getPage();
-
- // Find the submit button.
- $submit_button = $page->find('css', '#wp-submit');
-
- // Try to focus the submit button.
try {
- $submit_button->focus();
+ $field->focus();
} catch (UnsupportedDriverActionException $e) {
// This will fail for GoutteDriver but neither is it necessary.
}
- // Click the submit button.
- $submit_button->click();
+ $field->check();
}
- /**
- * Verify and return a properly started Mink session
- *
- * @return \Behat\Mink\Session Mink session.
+ /**
+ * Submit the log-in form.
*/
- protected function verifySession()
+ public function submitLoginForm()
{
- // Get the session.
$session = $this->getSession();
+ $button = $session->getPage()->find('css', '#wp-submit');
- // Start the session if needed.
- if (! $session->isStarted()) {
- $session->start();
- }
-
- // If we aren't on a valid page
- if ('about:blank' === $session->getCurrentUrl()) {
- // Go to the home page
- $session->visit('/');
+ try {
+ $button->focus();
+ } catch (UnsupportedDriverActionException $e) {
+ // This will fail for GoutteDriver but neither is it necessary.
}
- // Return the session.
- return $session;
+ $button->click();
}
}
diff --git a/src/ServiceContainer/config/drivers/wpcli.yml b/src/ServiceContainer/config/drivers/wpcli.yml
index 96fee3b9..ed4cf9e1 100755
--- a/src/ServiceContainer/config/drivers/wpcli.yml
+++ b/src/ServiceContainer/config/drivers/wpcli.yml
@@ -4,6 +4,7 @@ parameters:
wordpress.element.wpcli.comment.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpcli\CommentElement
wordpress.element.wpcli.content.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpcli\ContentElement
wordpress.element.wpcli.database.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpcli\DatabaseElement
+ wordpress.element.wpcli.filesystem.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpcli\FilesystemElement
wordpress.element.wpcli.plugin.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpcli\PluginElement
wordpress.element.wpcli.term.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpcli\TermElement
wordpress.element.wpcli.theme.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpcli\ThemeElement
@@ -49,6 +50,13 @@ services:
tags:
- { name: wordpress.element, alias: database, driver: wpcli }
+ wordpress.element.wpcli.filesystem:
+ class: "%wordpress.element.wpcli.filesystem.class%"
+ arguments:
+ - "@wordpress.wordpress"
+ tags:
+ - { name: wordpress.element, alias: filesystem, driver: wpcli }
+
wordpress.element.wpcli.plugin:
class: "%wordpress.element.wpcli.plugin.class%"
arguments:
diff --git a/src/ServiceContainer/config/drivers/wpphp.yml b/src/ServiceContainer/config/drivers/wpphp.yml
index 7454a726..2e318aa8 100755
--- a/src/ServiceContainer/config/drivers/wpphp.yml
+++ b/src/ServiceContainer/config/drivers/wpphp.yml
@@ -4,6 +4,7 @@ parameters:
wordpress.element.wpphp.comment.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpphp\CommentElement
wordpress.element.wpphp.content.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpphp\ContentElement
wordpress.element.wpphp.database.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpphp\DatabaseElement
+ wordpress.element.wpphp.filesystem.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpphp\FilesystemElement
wordpress.element.wpphp.plugin.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpphp\PluginElement
wordpress.element.wpphp.term.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpphp\TermElement
wordpress.element.wpphp.theme.class: PaulGibbs\WordpressBehatExtension\Driver\Element\Wpphp\ThemeElement
@@ -46,6 +47,13 @@ services:
tags:
- { name: wordpress.element, alias: database, driver: wpphp }
+ wordpress.element.wpphp.filesystem:
+ class: "%wordpress.element.wpphp.filesystem.class%"
+ arguments:
+ - "@wordpress.wordpress"
+ tags:
+ - { name: wordpress.element, alias: filesystem, driver: wpphp }
+
wordpress.element.wpphp.plugin:
class: "%wordpress.element.wpphp.plugin.class%"
arguments:
diff --git a/tests/app/behat-ci.yml b/tests/app/behat-ci.yml
new file mode 100644
index 00000000..8ff1f179
--- /dev/null
+++ b/tests/app/behat-ci.yml
@@ -0,0 +1,52 @@
+default:
+ suites:
+ default:
+ paths:
+ - '%paths.base%/../../features'
+ contexts:
+ - PaulGibbs\WordpressBehatExtension\Context\WordpressContext
+ - Behat\MinkExtension\Context\MinkContext
+ - PaulGibbs\WordpressBehatExtension\Context\ContentContext
+ - PaulGibbs\WordpressBehatExtension\Context\DashboardContext
+ - PaulGibbs\WordpressBehatExtension\Context\SiteContext
+ - PaulGibbs\WordpressBehatExtension\Context\UserContext
+ - PaulGibbs\WordpressBehatExtension\Context\EditPostContext
+ - PaulGibbs\WordpressBehatExtension\Context\WidgetContext
+ - PaulGibbs\WordpressBehatExtension\Context\ToolbarContext
+ - PaulGibbs\WordpressBehatExtension\Context\DebugContext
+ - FailAid\Context\FailureContext
+
+ extensions:
+ DMore\ChromeExtension\Behat\ServiceContainer\ChromeExtension: ~
+
+ Behat\MinkExtension:
+ base_url: http://localhost:8000
+ browser_name: chrome
+ default_session: headless
+ javascript_session: javascript
+ sessions:
+ headless:
+ goutte:
+ guzzle_parameters:
+ verify: false
+ javascript:
+ chrome:
+ api_url: http://localhost:9222
+ validate_certificate: false
+
+ PaulGibbs\WordpressBehatExtension:
+ path: tests/app/www/
+ users:
+ -
+ roles:
+ - administrator
+ username: admin
+ password: password
+ database:
+ restore_after_test: true
+ wpcli:
+ binary: vendor/bin/wp
+
+ FailAid\Extension:
+ screenshotDirectory: '%paths.base%/../artifacts'
+ screenshotMode: default
diff --git a/tests/artifacts/.gitkeep b/tests/artifacts/.gitkeep
new file mode 100644
index 00000000..e8e7b62c
--- /dev/null
+++ b/tests/artifacts/.gitkeep
@@ -0,0 +1 @@
+# Folder is required for test suite.
diff --git a/wp-cli.yml b/wp-cli.yml
new file mode 100644
index 00000000..779af82c
--- /dev/null
+++ b/wp-cli.yml
@@ -0,0 +1,3 @@
+@dev:
+ ssh: vagrant@behat.local
+ path: /vagrant/wp