[TOOLS] Setup pa11y to run on pages after codeception
This commit is contained in:
parent
d713429d88
commit
65504b72bb
2
Makefile
2
Makefile
@ -46,7 +46,7 @@ tooling-php-shell: tooling-docker
|
|||||||
docker exec -it $(call translate-container-name,tooling_php_1) sh
|
docker exec -it $(call translate-container-name,tooling_php_1) sh
|
||||||
|
|
||||||
acceptance-and-accessibility: tooling-docker
|
acceptance-and-accessibility: tooling-docker
|
||||||
docker exec -it $(call translate-container-name,tooling_php_1) sh -c "SYMFONY_DEPRECATIONS_HELPER=weak vendor/bin/codecept run"
|
docker exec -it $(call translate-container-name,tooling_php_1) /var/tooling/acceptance_and_accessibility.sh
|
||||||
|
|
||||||
test: tooling-docker
|
test: tooling-docker
|
||||||
docker exec $(call translate-container-name,tooling_php_1) /var/tooling/coverage.sh $(call args,'')
|
docker exec $(call translate-container-name,tooling_php_1) /var/tooling/coverage.sh $(call args,'')
|
||||||
|
@ -1 +0,0 @@
|
|||||||
Subproject commit abcd45f8ecd361ae1b84cc40df4dbf2548735035
|
|
3
docker/tooling/acceptance_and_accessibility.sh
Executable file
3
docker/tooling/acceptance_and_accessibility.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
SYMFONY_DEPRECATIONS_HELPER=weak vendor/bin/codecept run
|
@ -2,10 +2,11 @@ version: '3'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
php:
|
php:
|
||||||
build: .
|
build: php
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
- redis
|
- redis
|
||||||
|
- pa11y
|
||||||
volumes:
|
volumes:
|
||||||
# Entrypoint
|
# Entrypoint
|
||||||
- ../php/entrypoint.sh:/entrypoint.sh
|
- ../php/entrypoint.sh:/entrypoint.sh
|
||||||
@ -13,6 +14,7 @@ services:
|
|||||||
- ../social/install.sh:/var/entrypoint.d/0_social_install.sh
|
- ../social/install.sh:/var/entrypoint.d/0_social_install.sh
|
||||||
- ./coverage.sh:/var/tooling/coverage.sh
|
- ./coverage.sh:/var/tooling/coverage.sh
|
||||||
- ./phpstan.sh:/var/tooling/phpstan.sh
|
- ./phpstan.sh:/var/tooling/phpstan.sh
|
||||||
|
- ./acceptance_and_accessibility.sh:/var/tooling/acceptance_and_accessibility.sh
|
||||||
# Main files
|
# Main files
|
||||||
- ../../:/var/www/social
|
- ../../:/var/www/social
|
||||||
- /var/www/social/docker # exclude docker folder
|
- /var/www/social/docker # exclude docker folder
|
||||||
@ -28,9 +30,6 @@ services:
|
|||||||
- php
|
- php
|
||||||
restart: always
|
restart: always
|
||||||
tty: false
|
tty: false
|
||||||
# ports:
|
|
||||||
# - "8080:80"
|
|
||||||
# - "4443:443"
|
|
||||||
volumes:
|
volumes:
|
||||||
# Nginx
|
# Nginx
|
||||||
- ../nginx/nginx.conf:/var/nginx/social.conf
|
- ../nginx/nginx.conf:/var/nginx/social.conf
|
||||||
@ -44,6 +43,13 @@ services:
|
|||||||
- ../bootstrap/bootstrap.env
|
- ../bootstrap/bootstrap.env
|
||||||
command: /bin/sh -c '/var/nginx/domain.sh; nginx -g "daemon off;"'
|
command: /bin/sh -c '/var/nginx/domain.sh; nginx -g "daemon off;"'
|
||||||
|
|
||||||
|
pa11y:
|
||||||
|
build: pa11y
|
||||||
|
volumes:
|
||||||
|
- ../../tests/CodeCeption/pa11y-config.json:/pa11y/config.json
|
||||||
|
cap_add:
|
||||||
|
- SYS_ADMIN
|
||||||
|
|
||||||
db:
|
db:
|
||||||
image: postgres:alpine
|
image: postgres:alpine
|
||||||
environment:
|
environment:
|
||||||
|
8
docker/tooling/pa11y/Dockerfile
Normal file
8
docker/tooling/pa11y/Dockerfile
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
FROM node
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get -y install npm openssh-server && npm install -g pa11y
|
||||||
|
|
||||||
|
COPY sshd_config /etc/ssh/sshd_config
|
||||||
|
RUN echo 'root:pa11y' | chpasswd
|
||||||
|
|
||||||
|
ENTRYPOINT service ssh start && sleep infinity
|
7
docker/tooling/pa11y/sshd_config
Normal file
7
docker/tooling/pa11y/sshd_config
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
ChallengeResponseAuthentication no
|
||||||
|
ListenAddress 0.0.0.0
|
||||||
|
PasswordAuthentication yes
|
||||||
|
PermitEmptyPasswords yes
|
||||||
|
PermitRootLogin yes
|
||||||
|
Port 22
|
||||||
|
|
@ -7,4 +7,4 @@ RUN apk update \
|
|||||||
&& pecl install xdebug \
|
&& pecl install xdebug \
|
||||||
&& docker-php-ext-enable xdebug
|
&& docker-php-ext-enable xdebug
|
||||||
|
|
||||||
RUN apk add npm && npm install -g pa11y
|
RUN apk add --no-cache openssh sshpass
|
@ -92,22 +92,17 @@ class AccessibilityValidator extends \Codeception\Module
|
|||||||
throw new Exception('Unknown standard: ' . $standard);
|
throw new Exception('Unknown standard: ' . $standard);
|
||||||
}
|
}
|
||||||
|
|
||||||
$pa11yPath = $this->_getConfig('pa11yPath');
|
exec('sshpass -p pa11y ssh -o StrictHostKeyChecking=no pa11y 2>/dev/null pa11y -c /pa11y/config.json' . ' -s ' . $standard . " -r json '" . addslashes($url) . "'", $output);
|
||||||
if (!$pa11yPath) {
|
|
||||||
$pa11yPath = 'pa11y';
|
|
||||||
}
|
|
||||||
if (!file_exists($pa11yPath)) {
|
|
||||||
throw new Exception('pa11y not found: ' . $pa11yPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
exec($pa11yPath . ' -s ' . $standard . " -r json '" . addslashes($url) . "'", $return);
|
if (!empty($output)) {
|
||||||
$data = json_decode($return[0], true);
|
$data = json_decode($output[0], true);
|
||||||
if (!$data) {
|
if (!$data) {
|
||||||
$msg = 'Invalid data returned from validation service: ';
|
throw new Exception('Invalid data returned from validation service: ' . implode("\n", $output));
|
||||||
throw new Exception($msg . $return);
|
|
||||||
}
|
}
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string[] $ignoreMessages
|
* @param string[] $ignoreMessages
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types = 1);
|
||||||
|
|
||||||
class FirstCest
|
class LoggedOutCest
|
||||||
{
|
{
|
||||||
public function _before(AcceptanceTester $I)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public function root(AcceptanceTester $I)
|
public function root(AcceptanceTester $I)
|
||||||
{
|
{
|
||||||
$I->amOnPage('/');
|
$I->amOnPage('/');
|
||||||
$I->see('Feed');
|
$I->see('Feed');
|
||||||
|
$I->validatePa11y(\Helper\AccessibilityValidator::STANDARD_WCAG2AAA);
|
||||||
}
|
}
|
||||||
}
|
}
|
5
tests/CodeCeption/pa11y-config.js
Normal file
5
tests/CodeCeption/pa11y-config.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"chromeLaunchConfig": {
|
||||||
|
"args": ["--no-sandbox"]
|
||||||
|
}
|
||||||
|
}
|
6
tests/CodeCeption/pa11y-config.json
Normal file
6
tests/CodeCeption/pa11y-config.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"chromeLaunchConfig": {
|
||||||
|
"args": ["--no-sandbox"],
|
||||||
|
"ignoreHTTPSErrors": true
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user