Browse Source

[DEPENDENCIES][TOOL] Add codeception and bootstrap it for acceptance and accessibility testing

v3
Hugo Sales 1 week ago
parent
commit
38baa192d8
Signed by: someonewithpc <hugo@hsal.es> GPG Key ID: 7D0C7EAFC9D835A0
12 changed files with 862 additions and 82 deletions
  1. +10
    -0
      codeception.yml
  2. +46
    -2
      composer.json
  3. +573
    -80
      composer.lock
  4. +9
    -0
      symfony.lock
  5. +0
    -0
      tests/CodeCeption/_data/.gitkeep
  6. +2
    -0
      tests/CodeCeption/_output/.gitignore
  7. +28
    -0
      tests/CodeCeption/_support/AcceptanceTester.php
  8. +12
    -0
      tests/CodeCeption/_support/Helper/Acceptance.php
  9. +147
    -0
      tests/CodeCeption/_support/Helper/AccessibilityValidator.php
  10. +2
    -0
      tests/CodeCeption/_support/_generated/.gitignore
  11. +17
    -0
      tests/CodeCeption/acceptance.suite.yml
  12. +16
    -0
      tests/CodeCeption/acceptance/FirstCest.php

+ 10
- 0
codeception.yml View File

@@ -0,0 +1,10 @@
paths:
tests: tests/CodeCeption
output: tests/CodeCeption/_output
data: tests/CodeCeption/_data
support: tests/CodeCeption/_support
envs: tests/CodeCeption/_envs
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed

+ 46
- 2
composer.json View File

@@ -67,6 +67,9 @@
"wikimedia/composer-merge-plugin": "^2.0"
},
"require-dev": {
"codeception/codeception": "^4.1",
"codeception/module-phpbrowser": "^2.0",
"codeception/module-symfony": "^2.1",
"doctrine/doctrine-fixtures-bundle": "^3.4",
"friendsofphp/php-cs-fixer": "^3.2.1",
"jchook/phpunit-assert-throws": "^1.0",
@@ -82,7 +85,8 @@
"symfony/stopwatch": "5.4.*",
"symfony/web-profiler-bundle": "^5.4.",
"ulrichsg/getopt-php": "*",
"wp-cli/php-cli-tools": "^0.11.13"
"wp-cli/php-cli-tools": "^0.11.13",
"codeception/module-asserts": "^1.0.0"
},
"config": {
"preferred-install": {
@@ -108,7 +112,11 @@
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"files": [
"tests/CodeCeption/_support/_generated/AcceptanceTesterActions.php",
"tests/CodeCeption/_support/AcceptanceTester.php"
]
},
"replace": {
"paragonie/random_compat": "2.*",
@@ -184,6 +192,42 @@
"reference": "master"
}
}
},
{
"type": "package",
"package": {
"name": "codeception/codeception",
"version": "4.1.30",
"autoload": {
"psr-4": {
"Codeception\\": "src/Codeception",
"Codeception\\Extension\\": "ext"
},
"files": ["functions.php"]
},
"require": {
"php": ">=5.6.0 <9.0",
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"codeception/lib-asserts": "^1.0 | 2.0.*@dev",
"guzzlehttp/psr7": "^1.4 | ^2.0",
"symfony/finder": ">=2.7 <6.0",
"symfony/console": ">=2.7 <6.0",
"symfony/event-dispatcher": ">=2.7 <6.0",
"symfony/yaml": ">=2.7 <6.0",
"symfony/css-selector": ">=2.7 <6.0",
"behat/gherkin": "^4.4.0",
"codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0",
"codeception/stub": "^2.0 | ^3.0 | ^4.0"
},
"bin":["codecept"],
"source": {
"url": "https://github.com/someonewithpc/Codeception.git",
"type": "git",
"reference": "4.1"
}
}
}
]
}

+ 573
- 80
composer.lock View File

@@ -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": "b65e020cc6b2de3186778d0b3f1aa277",
"content-hash": "4533a7f4059639e03dbbb34b48f09cf5",
"packages": [
{
"name": "alchemy/binary-driver",
@@ -553,16 +553,16 @@
},
{
"name": "doctrine/dbal",
"version": "3.2.0",
"version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "5d54f63541d7bed1156cb5c9b79274ced61890e4"
"reference": "4caf37acf14b513a91dd4f087f7eda424fa25542"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/5d54f63541d7bed1156cb5c9b79274ced61890e4",
"reference": "5d54f63541d7bed1156cb5c9b79274ced61890e4",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/4caf37acf14b513a91dd4f087f7eda424fa25542",
"reference": "4caf37acf14b513a91dd4f087f7eda424fa25542",
"shasum": ""
},
"require": {
@@ -577,14 +577,14 @@
"require-dev": {
"doctrine/coding-standard": "9.0.0",
"jetbrains/phpstorm-stubs": "2021.1",
"phpstan/phpstan": "1.2.0",
"phpstan/phpstan": "1.3.0",
"phpstan/phpstan-strict-rules": "^1.1",
"phpunit/phpunit": "9.5.10",
"phpunit/phpunit": "9.5.11",
"psalm/plugin-phpunit": "0.16.1",
"squizlabs/php_codesniffer": "3.6.1",
"squizlabs/php_codesniffer": "3.6.2",
"symfony/cache": "^5.2|^6.0",
"symfony/console": "^2.0.5|^3.0|^4.0|^5.0|^6.0",
"vimeo/psalm": "4.13.0"
"vimeo/psalm": "4.16.1"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
@@ -644,7 +644,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.2.0"
"source": "https://github.com/doctrine/dbal/tree/3.2.1"
},
"funding": [
{
@@ -660,7 +660,7 @@
"type": "tidelift"
}
],
"time": "2021-11-26T21:00:12+00:00"
"time": "2022-01-05T08:52:06+00:00"
},
{
"name": "doctrine/deprecations",
@@ -707,16 +707,16 @@
},
{
"name": "doctrine/doctrine-bundle",
"version": "2.5.4",
"version": "2.5.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git",
"reference": "f6191c50600bad1c0195638413f53aee6158b909"
"reference": "5c086cbbe5327937dd6f90da075f7d421b0f28bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/f6191c50600bad1c0195638413f53aee6158b909",
"reference": "f6191c50600bad1c0195638413f53aee6158b909",
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5c086cbbe5327937dd6f90da075f7d421b0f28bc",
"reference": "5c086cbbe5327937dd6f90da075f7d421b0f28bc",
"shasum": ""
},
"require": {
@@ -729,7 +729,7 @@
"symfony/cache": "^4.3.3|^5.0|^6.0",
"symfony/config": "^4.4.3|^5.0|^6.0",
"symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0",
"symfony/dependency-injection": "^4.3.3|^5.0|^6.0",
"symfony/dependency-injection": "^4.4.18|^5.0|^6.0",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0",
"symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0",
@@ -800,7 +800,7 @@
],
"support": {
"issues": "https://github.com/doctrine/DoctrineBundle/issues",
"source": "https://github.com/doctrine/DoctrineBundle/tree/2.5.4"
"source": "https://github.com/doctrine/DoctrineBundle/tree/2.5.5"
},
"funding": [
{
@@ -816,7 +816,7 @@
"type": "tidelift"
}
],
"time": "2021-12-30T18:43:28+00:00"
"time": "2022-01-06T08:56:31+00:00"
},
{
"name": "doctrine/doctrine-migrations-bundle",
@@ -1651,16 +1651,16 @@
},
{
"name": "embed/embed",
"version": "v4.3.5",
"version": "v4.4.0",
"source": {
"type": "git",
"url": "https://github.com/oscarotero/Embed.git",
"reference": "4dd2b05119462142ea4adfcf42e75f31dc056975"
"reference": "24fe9376e8de48c536ddaddf0025ae39cae5ddfe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/oscarotero/Embed/zipball/4dd2b05119462142ea4adfcf42e75f31dc056975",
"reference": "4dd2b05119462142ea4adfcf42e75f31dc056975",
"url": "https://api.github.com/repos/oscarotero/Embed/zipball/24fe9376e8de48c536ddaddf0025ae39cae5ddfe",
"reference": "24fe9376e8de48c536ddaddf0025ae39cae5ddfe",
"shasum": ""
},
"require": {
@@ -1720,9 +1720,9 @@
"support": {
"email": "oom@oscarotero.com",
"issues": "https://github.com/oscarotero/Embed/issues",
"source": "https://github.com/oscarotero/Embed/tree/v4.3.5"
"source": "https://github.com/oscarotero/Embed/tree/v4.4.0"
},
"time": "2021-10-10T17:10:44+00:00"
"time": "2022-01-08T13:26:18+00:00"
},
{
"name": "erusev/parsedown",
@@ -3938,16 +3938,16 @@
},
{
"name": "phpdocumentor/type-resolver",
"version": "1.5.1",
"version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae"
"reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae",
"reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
"reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
"shasum": ""
},
"require": {
@@ -3982,9 +3982,9 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1"
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
},
"time": "2021-10-02T14:08:47+00:00"
"time": "2022-01-04T19:58:01+00:00"
},
{
"name": "phpseclib/phpseclib",
@@ -7614,16 +7614,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.23.1",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
"reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
"reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
"reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
"shasum": ""
},
"require": {
@@ -7675,7 +7675,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0"
},
"funding": [
{
@@ -7691,20 +7691,20 @@
"type": "tidelift"
}
],
"time": "2021-05-27T12:26:48+00:00"
"time": "2021-11-23T21:10:46+00:00"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.23.0",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "4a80a521d6176870b6445cfb469c130f9cae1dda"
"reference": "c023a439b8551e320cc3c8433b198e408a623af1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4a80a521d6176870b6445cfb469c130f9cae1dda",
"reference": "4a80a521d6176870b6445cfb469c130f9cae1dda",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/c023a439b8551e320cc3c8433b198e408a623af1",
"reference": "c023a439b8551e320cc3c8433b198e408a623af1",
"shasum": ""
},
"require": {
@@ -7762,7 +7762,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.23.0"
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.24.0"
},
"funding": [
{
@@ -7778,20 +7778,20 @@
"type": "tidelift"
}
],
"time": "2021-05-24T10:04:56+00:00"
"time": "2021-10-26T17:16:04+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.23.0",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "65bd267525e82759e7d8c4e8ceea44f398838e65"
"reference": "749045c69efb97c70d25d7463abba812e91f3a44"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65",
"reference": "65bd267525e82759e7d8c4e8ceea44f398838e65",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"shasum": ""
},
"require": {
@@ -7849,7 +7849,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0"
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
},
"funding": [
{
@@ -7865,11 +7865,11 @@
"type": "tidelift"
}
],
"time": "2021-05-27T09:27:20+00:00"
"time": "2021-09-14T14:02:44+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.23.0",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -7933,7 +7933,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
},
"funding": [
{
@@ -7953,21 +7953,24 @@
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.23.1",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
"reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
@@ -8013,7 +8016,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
},
"funding": [
{
@@ -8029,20 +8032,20 @@
"type": "tidelift"
}
],
"time": "2021-05-27T12:26:48+00:00"
"time": "2021-11-30T18:21:41+00:00"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.23.0",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
"reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
"reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
"reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
"shasum": ""
},
"require": {
@@ -8092,7 +8095,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
"source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0"
},
"funding": [
{
@@ -8108,20 +8111,20 @@
"type": "tidelift"
}
],
"time": "2021-02-19T12:13:01+00:00"
"time": "2021-06-05T21:20:04+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.23.1",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
"reference": "57b712b08eddb97c762a8caa32c84e037892d2e9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
"reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9",
"reference": "57b712b08eddb97c762a8caa32c84e037892d2e9",
"shasum": ""
},
"require": {
@@ -8175,7 +8178,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0"
},
"funding": [
{
@@ -8191,20 +8194,20 @@
"type": "tidelift"
}
],
"time": "2021-07-28T13:41:28+00:00"
"time": "2021-09-13T13:58:33+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.23.0",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
"reference": "e66119f3de95efc359483f810c4c3e6436279436"
"reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436",
"reference": "e66119f3de95efc359483f810c4c3e6436279436",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
"reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
"shasum": ""
},
"require": {
@@ -8254,7 +8257,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0"
"source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0"
},
"funding": [
{
@@ -8270,7 +8273,7 @@
"type": "tidelift"
}
],
"time": "2021-05-21T13:25:03+00:00"
"time": "2021-09-13T13:58:11+00:00"
},
{
"name": "symfony/process",
@@ -11131,6 +11134,496 @@
}
],
"packages-dev": [
{
"name": "behat/gherkin",
"version": "v4.9.0",
"source": {
"type": "git",
"url": "https://github.com/Behat/Gherkin.git",
"reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4",
"reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4",
"shasum": ""
},
"require": {
"php": "~7.2|~8.0"
},
"require-dev": {
"cucumber/cucumber": "dev-gherkin-22.0.0",
"phpunit/phpunit": "~8|~9",
"symfony/yaml": "~3|~4|~5"
},
"suggest": {
"symfony/yaml": "If you want to parse features, represented in YAML files"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.x-dev"
}
},
"autoload": {
"psr-0": {
"Behat\\Gherkin": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Konstantin Kudryashov",
"email": "ever.zet@gmail.com",
"homepage": "http://everzet.com"
}
],
"description": "Gherkin DSL parser for PHP",
"homepage": "http://behat.org/",
"keywords": [
"BDD",
"Behat",
"Cucumber",
"DSL",
"gherkin",
"parser"
],
"support": {
"issues": "https://github.com/Behat/Gherkin/issues",
"source": "https://github.com/Behat/Gherkin/tree/v4.9.0"
},
"time": "2021-10-12T13:05:09+00:00"
},
{
"name": "codeception/codeception",
"version": "4.1.30",
"source": {
"type": "git",
"url": "https://github.com/someonewithpc/Codeception.git",
"reference": "4.1"
},
"require": {
"behat/gherkin": "^4.4.0",
"codeception/lib-asserts": "^1.0 | 2.0.*@dev",
"codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0",
"codeception/stub": "^2.0 | ^3.0 | ^4.0",
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"guzzlehttp/psr7": "^1.4 | ^2.0",
"php": ">=5.6.0 <9.0",
"symfony/console": ">=2.7 <6.0",
"symfony/css-selector": ">=2.7 <6.0",
"symfony/event-dispatcher": ">=2.7 <6.0",
"symfony/finder": ">=2.7 <6.0",
"symfony/yaml": ">=2.7 <6.0"
},
"bin": [
"codecept"
],
"type": "library",
"autoload": {
"psr-4": {
"Codeception\\": "src/Codeception",
"Codeception\\Extension\\": "ext"
},
"files": [
"functions.php"
]
}
},
{
"name": "codeception/lib-asserts",
"version": "1.13.2",
"source": {
"type": "git",
"url": "https://github.com/Codeception/lib-asserts.git",
"reference": "184231d5eab66bc69afd6b9429344d80c67a33b6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6",
"reference": "184231d5eab66bc69afd6b9429344d80c67a33b6",
"shasum": ""
},
"require": {
"codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0",
"ext-dom": "*",
"php": ">=5.6.0 <9.0"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Bodnarchuk",
"email": "davert@mail.ua",
"homepage": "http://codegyre.com"
},
{
"name": "Gintautas Miselis"
},
{
"name": "Gustavo Nieves",
"homepage": "https://medium.com/@ganieves"
}
],
"description": "Assertion methods used by Codeception core and Asserts module",
"homepage": "https://codeception.com/",
"keywords": [
"codeception"
],
"support": {
"issues": "https://github.com/Codeception/lib-asserts/issues",
"source": "https://github.com/Codeception/lib-asserts/tree/1.13.2"
},
"time": "2020-10-21T16:26:20+00:00"
},
{
"name": "codeception/lib-innerbrowser",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/Codeception/lib-innerbrowser.git",
"reference": "c7bf42d5a38e2883ae9cf298ec9d15b1185815fb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/c7bf42d5a38e2883ae9cf298ec9d15b1185815fb",
"reference": "c7bf42d5a38e2883ae9cf298ec9d15b1185815fb",
"shasum": ""
},
"require": {
"codeception/codeception": "^4.1 | 4.*@dev",
"ext-dom": "*",
"ext-json": "*",
"ext-mbstring": "*",
"php": "^7.4 | ^8.0",
"symfony/browser-kit": "^4.4 | ^5.4 | ^6.0",
"symfony/dom-crawler": "^4.4 | ^5.4 | ^6.0"
},
"conflict": {
"codeception/codeception": "<4.1"
},
"require-dev": {
"codeception/util-universalframework": "dev-master"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Bodnarchuk",
"email": "davert@mail.ua",
"homepage": "https://codegyre.com"
},
{
"name": "Gintautas Miselis"
}
],
"description": "Parent library for all Codeception framework modules and PhpBrowser",
"homepage": "https://codeception.com/",
"keywords": [
"codeception"
],
"support": {
"issues": "https://github.com/Codeception/lib-innerbrowser/issues",
"source": "https://github.com/Codeception/lib-innerbrowser/tree/2.0.1"
},
"time": "2021-12-21T01:40:35+00:00"
},
{
"name": "codeception/module-asserts",
"version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/Codeception/module-asserts.git",
"reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de",
"reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de",
"shasum": ""
},
"require": {
"codeception/codeception": "*@dev",
"codeception/lib-asserts": "^1.13.1",
"php": ">=5.6.0 <9.0"
},
"conflict": {
"codeception/codeception": "<4.0"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Bodnarchuk"
},
{
"name": "Gintautas Miselis"
},
{
"name": "Gustavo Nieves",
"homepage": "https://medium.com/@ganieves"
}
],
"description": "Codeception module containing various assertions",
"homepage": "https://codeception.com/",
"keywords": [
"assertions",
"asserts",
"codeception"
],
"support": {
"issues": "https://github.com/Codeception/module-asserts/issues",
"source": "https://github.com/Codeception/module-asserts/tree/1.3.1"
},
"time": "2020-10-21T16:48:15+00:00"
},
{
"name": "codeception/module-phpbrowser",
"version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/Codeception/module-phpbrowser.git",
"reference": "fda6d97253d0595843adb87ec0b9b7d6d89539ac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/fda6d97253d0595843adb87ec0b9b7d6d89539ac",
"reference": "fda6d97253d0595843adb87ec0b9b7d6d89539ac",
"shasum": ""
},
"require": {
"codeception/codeception": "^4.1 | *@dev",
"codeception/lib-innerbrowser": "^2.0 | *@dev",
"ext-json": "*",
"guzzlehttp/guzzle": "^7.4",
"php": "^7.4 | ^8.0"
},
"conflict": {
"codeception/codeception": "<4.1"
},
"require-dev": {
"aws/aws-sdk-php": "^3.199",
"codeception/module-rest": "^2.0 | *@dev",
"ext-curl": "*"
},
"suggest": {
"codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Bodnarchuk"
},
{
"name": "Gintautas Miselis"
}
],
"description": "Codeception module for testing web application over HTTP",
"homepage": "https://codeception.com/",
"keywords": [
"codeception",
"functional-testing",
"http"
],
"support": {
"issues": "https://github.com/Codeception/module-phpbrowser/issues",
"source": "https://github.com/Codeception/module-phpbrowser/tree/2.0.2"
},
"time": "2021-12-21T15:16:28+00:00"
},
{
"name": "codeception/module-symfony",
"version": "2.1.1",
"source": {
"type": "git",
"url": "https://github.com/Codeception/module-symfony.git",
"reference": "6cbbd24aa51f3d9b56164ba043c38df28c00cabe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Codeception/module-symfony/zipball/6cbbd24aa51f3d9b56164ba043c38df28c00cabe",
"reference": "6cbbd24aa51f3d9b56164ba043c38df28c00cabe",
"shasum": ""
},
"require": {
"codeception/codeception": "^4.1",
"codeception/lib-innerbrowser": "^2.0",
"ext-json": "*",
"php": "^7.4 | ^8.0"
},
"require-dev": {
"codeception/module-asserts": "^2.0",
"codeception/module-doctrine2": "^2.0",
"doctrine/orm": "^2.10",
"symfony/form": "^4.4 | ^5.0",
"symfony/framework-bundle": "^4.4 | ^5.0",
"symfony/http-kernel": "^4.4 | ^5.0",
"symfony/mailer": "^4.4 | ^5.0",
"symfony/routing": "^4.4 | ^5.0",
"symfony/security-bundle": "^4.4 | ^5.0",
"symfony/twig-bundle": "^4.4 | ^5.0",
"vlucas/phpdotenv": "^4.2 | ^5.4"
},
"suggest": {
"codeception/module-asserts": "Include traditional PHPUnit assertions in your tests",
"symfony/web-profiler-bundle": "Tool that gives information about the execution of requests"
},
"type": "library",
"autoload": {
"classmap": [
"src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Bodnarchuk"
},
{
"name": "Gustavo Nieves",
"homepage": "https://medium.com/@ganieves"
}
],
"description": "Codeception module for Symfony framework",
"homepage": "https://codeception.com/",
"keywords": [
"codeception",
"symfony"
],
"support": {
"issues": "https://github.com/Codeception/module-symfony/issues",
"source": "https://github.com/Codeception/module-symfony/tree/2.1.1"
},
"time": "2021-12-08T02:43:28+00:00"
},
{
"name": "codeception/phpunit-wrapper",
"version": "9.0.6",
"source": {
"type": "git",
"url": "https://github.com/Codeception/phpunit-wrapper.git",
"reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/b0c06abb3181eedca690170f7ed0fd26a70bfacc",
"reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc",
"shasum": ""
},
"require": {
"php": ">=7.2",
"phpunit/phpunit": "^9.0"
},
"require-dev": {
"codeception/specify": "*",
"consolidation/robo": "^3.0.0-alpha3",
"vlucas/phpdotenv": "^3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Codeception\\PHPUnit\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Davert",
"email": "davert.php@resend.cc"
},
{
"name": "Naktibalda"
}
],
"description": "PHPUnit classes used by Codeception",
"support": {
"issues": "https://github.com/Codeception/phpunit-wrapper/issues",
"source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.6"
},
"time": "2020-12-28T13:59:47+00:00"
},
{
"name": "codeception/stub",
"version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/Codeception/Stub.git",
"reference": "ce0a9e418c775ca8b737d50c2b4ac1132f3990d8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Codeception/Stub/zipball/ce0a9e418c775ca8b737d50c2b4ac1132f3990d8",
"reference": "ce0a9e418c775ca8b737d50c2b4ac1132f3990d8",
"shasum": ""
},
"require": {
"php": "^7.4 | ^8.0",
"phpunit/phpunit": "^8.4 | ^9.0"
},
"require-dev": {
"consolidation/robo": "^3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Codeception\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
"support": {
"issues": "https://github.com/Codeception/Stub/issues",
"source": "https://github.com/Codeception/Stub/tree/4.0.1"
},
"time": "2022-01-08T09:35:36+00:00"
},
{
"name": "composer/pcre",
"version": "1.0.0",
@@ -11954,12 +12447,12 @@
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "c3e7a5837829b3cd5907b895da73a4da084a9f8f"
"reference": "8cc108ee97f222890cc38fa56c26407e291d4fda"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/c3e7a5837829b3cd5907b895da73a4da084a9f8f",
"reference": "c3e7a5837829b3cd5907b895da73a4da084a9f8f",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/8cc108ee97f222890cc38fa56c26407e291d4fda",
"reference": "8cc108ee97f222890cc38fa56c26407e291d4fda",
"shasum": ""
},
"require": {
@@ -11976,7 +12469,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
"dev-master": "1.4-dev"
}
},
"autoload": {
@@ -11991,7 +12484,7 @@
"description": "PHPStan - PHP Static Analysis Tool",
"support": {
"issues": "https://github.com/phpstan/phpstan/issues",
"source": "https://github.com/phpstan/phpstan/tree/1.3.1"
"source": "https://github.com/phpstan/phpstan/tree/master"
},
"funding": [
{
@@ -12011,7 +12504,7 @@
"type": "tidelift"
}
],
"time": "2022-01-04T17:12:37+00:00"
"time": "2022-01-09T12:34:35+00:00"
},
{
"name": "phpunit/php-code-coverage",


+ 9
- 0
symfony.lock View File

@@ -2,6 +2,15 @@
"alchemy/binary-driver": {
"version": "v5.2.0"
},
"behat/gherkin": {
"version": "v4.9.0"
},
"codeception/module-asserts": {
"version": "1.3.1"
},
"codeception/stub": {
"version": "4.0.1"
},
"composer/ca-bundle": {
"version": "1.2.10"
},


+ 0
- 0
tests/CodeCeption/_data/.gitkeep View File


+ 2
- 0
tests/CodeCeption/_output/.gitignore View File

@@ -0,0 +1,2 @@
*
!.gitignore

+ 28
- 0
tests/CodeCeption/_support/AcceptanceTester.php View File

@@ -0,0 +1,28 @@
<?php

declare(strict_types = 1);

/**
* Inherited Methods
*
* @method void wantToTest($text)
* @method void wantTo($text)
* @method void execute($callable)
* @method void expectTo($prediction)
* @method void expect($prediction)
* @method void amGoingTo($argumentation)
* @method void am($role)
* @method void lookForwardTo($achieveValue)
* @method void comment($description)
* @method void pause()
*
* @SuppressWarnings(PHPMD)
*/
class AcceptanceTester extends \Codeception\Actor
{
use _generated\AcceptanceTesterActions;

/**
* Define custom actions here
*/
}

+ 12
- 0
tests/CodeCeption/_support/Helper/Acceptance.php View File

@@ -0,0 +1,12 @@
<?php

declare(strict_types = 1);

namespace Helper;

// here you can define custom actions
// all public methods declared in helper class will be available in $I

class Acceptance extends \Codeception\Module
{
}

+ 147
- 0
tests/CodeCeption/_support/Helper/AccessibilityValidator.php View File

@@ -0,0 +1,147 @@
<?php

declare(strict_types = 1);

/**
* A helper class for Codeception (http://codeception.com/) that allows automated accessility checks
* (WCAG 2.0, Section508) using the pa11y (http://pa11y.org/) command line tool
* during acceptance testing.
* It uses local binaries and can therefore be run offline.
*
* Requirements:
* =============
*
* - Codeception with WebDriver or PhpBrowser set up
* - pa11y is installed locally (e.g. using "npm insgall -g pa11y")
*
*
* Installation:
* =============
*
* - Copy this file to _support/Helper/ in the codeception directory
* - Merge the following configuration to acceptance.suite.yml:
*
* modules:
* enabled:
* - \Helper\AccessibilityValidator
* config:
* \Helper\AccessibilityValidator:
* pa11yPath: /usr/local/bin/pa11y
*
*
* Usage:
* ======
*
* Validate the current site against WCAG 2.0 (AAA):
* $I->validatePa11y(\Helper\AccessibilityValidator::STANDARD_WCAG2AAA);
*
* Validate the current site against WCAG 2.0 (AA):
* $I->validatePa11y(); // or:
* $I->validatePa11y(\Helper\AccessibilityValidator::STANDARD_WCAG2A);
*
* Validate the current site against WCAG 2.0 (A):
* $I->validatePa11y(\Helper\AccessibilityValidator::STANDARD_WCAG2A);
*
* Validate the current site against Section 508:
* $I->validatePa11y(\Helper\AccessibilityValidator::STANDARD_SECTION508);
*
* Validate against WCAG 2.0 (AA), but ignore errors containing the string "Ignoreme":
* $I->validatePa11y(\Helper\AccessibilityValidator::STANDARD_WCAG2A, ["Ignoreme"]);
*
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @author Tobias Hößl <tobias@hoessl.eu>
*/

namespace Helper;

use Exception;
use PHPUnit\Framework\Assert;

class AccessibilityValidator extends \Codeception\Module
{
public static $SUPPORTED_STANDARDS = [
'WCAG2AAA',
'WCAG2AA',
'WCAG2A',
'Section508',
];
public const STANDARD_WCAG2AAA = 'WCAG2AAA';
public const STANDARD_WCAG2AA = 'WCAG2AA';
public const STANDARD_WCAG2A = 'WCAG2A';
public const STANDARD_SECTION508 = 'Section508';

private function getPageUrl(): string
{
if ($this->hasModule('WebDriver')) {
/** @var \Codeception\Module\WebDriver $webdriver */
$webdriver = $this->getModule('WebDriver');
return $webdriver->webDriver->getCurrentURL();
} else {
/** @var \Codeception\Module\PhpBrowser $phpBrowser */
$phpBrowser = $this->getModule('PhpBrowser');
return trim($phpBrowser->_getUrl(), '/') . $phpBrowser->_getCurrentUri();
}
}

/**
* @throws Exception
*/
private function validateByPa11y(string $url, string $standard): array
{
if (!\in_array($standard, static::$SUPPORTED_STANDARDS)) {
throw new Exception('Unknown standard: ' . $standard);
}

$pa11yPath = $this->_getConfig('pa11yPath');
if (!$pa11yPath) {
$pa11yPath = 'pa11y';
}
if (!file_exists($pa11yPath)) {
throw new Exception('pa11y not found: ' . $pa11yPath);
}

exec($pa11yPath . ' -s ' . $standard . " -r json '" . addslashes($url) . "'", $return);
$data = json_decode($return[0], true);
if (!$data) {
$msg = 'Invalid data returned from validation service: ';
throw new Exception($msg . $return);
}
return $data;
}

/**
* @param string[] $ignoreMessages
*/
public function validatePa11y(string $standard = 'WCAG2AA', array $ignoreMessages = []): void
{
try {
$url = $this->getPageUrl();
$messages = $this->validateByPa11y($url, $standard);
} catch (Exception $e) {
$this->fail($e->getMessage());
return;
}
$failMessages = [];
foreach ($messages as $message) {
if ($message['type'] == 'error') {
$string = $message['code'] . "\n" . $message['selector'] . ': ';
$string .= $message['context'] . "\n";
$string .= $message['message'];
$ignoring = false;
foreach ($ignoreMessages as $ignoreMessage) {
if (mb_stripos($string, $ignoreMessage) !== false) {
$ignoring = true;
}
}
if (!$ignoring) {
$failMessages[] = $string;
}
}
}
if (\count($failMessages) > 0) {
$failStr = 'Failed ' . $standard . ' check: ' . "\n";
$failStr .= implode("\n\n", $failMessages);
Assert::fail($failStr);
}
}
}

+ 2
- 0
tests/CodeCeption/_support/_generated/.gitignore View File

@@ -0,0 +1,2 @@
*
!.gitignore

+ 17
- 0
tests/CodeCeption/acceptance.suite.yml View File

@@ -0,0 +1,17 @@
# Codeception Test Suite Configuration
#
# Suite for acceptance tests.
# Perform tests in browser using the WebDriver or PhpBrowser.
# If you need both WebDriver and PHPBrowser tests - create a separate suite.

actor: AcceptanceTester
modules:
enabled:
- PhpBrowser:
url: https://nginx
- \Helper\Acceptance
- \Helper\AccessibilityValidator
config:
\Helper\AccessibilityValidator:
pa11yPath: /usr/local/bin/pa11y
step_decorators: ~

+ 16
- 0
tests/CodeCeption/acceptance/FirstCest.php View File

@@ -0,0 +1,16 @@
<?php

declare(strict_types = 1);

class FirstCest
{
public function _before(AcceptanceTester $I)
{
}

public function root(AcceptanceTester $I)
{
$I->amOnPage('/');
$I->see('Feed');
}
}

Loading…
Cancel
Save