11on :
22pull_request :
3- branches-ignore :gh-pages
3+ branches-ignore :
4+ -gh-pages
45push :
56branches :
67 -main
78
89name :build
910
11+ concurrency :
12+ group :build-${{ github.ref }}
13+ cancel-in-progress :true
14+
1015permissions :
1116contents :read
17+ actions :write
18+
19+ env :
20+ PHP_INI_VALUES :memory_limit=-1,date.timezone=UTC
21+ COMPOSER_ROOT_VERSION :5.0.99
22+ SYMFONY_DEPRECATIONS_HELPER :weak
1223
1324jobs :
1425phpcs :
15- name :Code style
26+ name :Code style & Static Analysis
1627runs-on :ubuntu-latest
1728steps :
1829 -name :Checkout
1930uses :actions/checkout@v3
2031
21- -name :Install PHP
32+ -name :Install PHP & tools
2233uses :shivammathur/setup-php@v2
2334with :
2435php-version :' 8.2'
25- ini-values :memory_limit=-1, date.timezone='UTC'
26- tools :phpcs
36+ ini-values :${{ env.PHP_INI_VALUES }}
37+ tools :phpcs, composer:v2, phpstan
38+
39+ -name :Install dependencies
40+ run :composer install --no-interaction --no-progress --ansi
2741
2842 -name :Check production code style
2943run :composer cs-prod
3044
3145 -name :Check test code style
3246run :composer cs-tests
3347
34- linux :
35- name : PHP ${{ matrix.php }}-${{ matrix.os }}-${{ matrix.mode }}
48+ - name : PHPStan
49+ run : phpstan analyse src
3650
51+ linux :
52+ name :PHP ${{ matrix.php }}–${{ matrix.os }}–${{ matrix.mode }}
53+ runs-on :${{ matrix.os }}
3754env :
38- extensions :curl, mbstring, openssl, pdo, pdo_sqlite
39- SYMFONY_DEPRECATIONS_HELPER :weak
40- COMPOSER_ROOT_VERSION :5.0.99
55+ extensions :curl, mbstring, openssl, pdo, pdo_sqlite, zip
4156COLUMNS :120
42-
43- runs-on :${{ matrix.os }}
44-
4557strategy :
4658fail-fast :false
4759matrix :
4860os :[ubuntu-latest]
4961php :['8.2', '8.3', '8.4']
5062mode :['stable', 'experimental']
5163exclude :
52- -php :' 8.2'
53- mode :' experimental'
5464 -php :' 8.3'
5565mode :' experimental'
5666 -php :' 8.4'
@@ -60,12 +70,12 @@ jobs:
6070 -name :Checkout
6171uses :actions/checkout@v3
6272
63- -name :Install PHP
73+ -name :Install PHP & Composer
6474uses :shivammathur/setup-php@v2
6575with :
6676php-version :${{ matrix.php }}
6777extensions :${{ env.extensions }}
68- ini-values :memory_limit=-1, date.timezone='UTC'
78+ ini-values :${{ env.PHP_INI_VALUES }}
6979coverage :xdebug
7080tools :composer:v2
7181
@@ -84,18 +94,22 @@ jobs:
8494run :composer self-update
8595
8696 -name :Validate composer.json
87- run :composer validate
88-
89- -name :Install latest versions of dependencies in stable mode
90- if :matrix.mode == 'stable'
91- run :composer update --no-interaction --no-progress --optimize-autoloader --ansi
97+ run :composer validate --strict
9298
93- -name :Composer install lowest versions of dependencies on PHP 8.2 in experimental mode
94- if :matrix.php == '8.2' && matrix.mode == 'experimental'
95- run :composer update --prefer-lowest --no-interaction --no-progress --optimize-autoloader --ansi
99+ -name :Install / Update Dependencies
100+ run :|
101+ if [ "${{ matrix.mode }}" = "stable" ]; then
102+ composer update --no-interaction --no-progress --optimize-autoloader --ansi
103+ else
104+ composer update --prefer-lowest --no-interaction --no-progress --optimize-autoloader --ansi
105+ fi
96106
97107 -name :Test that failing test really fails
98- run :if php codecept run -c tests/data/claypit/ scenario FailedCept -vvv; then echo "Test hasn't failed"; false; fi;
108+ run :|
109+ if php codecept run -c tests/data/claypit/ scenario FailedCept -vvv; then
110+ echo "Test hasn't failed"
111+ false
112+ fi
99113
100114# - name: Run tests without code coverage on PHP 8.2
101115# if: matrix.php == '8.2'
@@ -127,15 +141,12 @@ jobs:
127141 php ../../../codecept run tests/unit/Codeception/Module/PhpBrowserTest.php
128142
129143windows-latest :
130- name :PHP ${{ matrix.php }}- ${{ matrix.os }}
131-
144+ name :PHP ${{ matrix.php }}– ${{ matrix.os }}
145+ runs-on : ${{ matrix.os }}
132146env :
133- extensions :curl, mbstring, openssl, pdo, pdo_sqlite
147+ extensions :curl, mbstring, openssl, pdo, pdo_sqlite, zip
134148SYMFONY_DEPRECATIONS_HELPER :weak
135149COMPOSER_ROOT_VERSION :5.0.99
136-
137- runs-on :${{ matrix.os }}
138-
139150strategy :
140151fail-fast :false
141152matrix :
@@ -146,16 +157,17 @@ jobs:
146157 -name :Checkout
147158uses :actions/checkout@v3
148159
149- -name :Install PHP
160+ -name :Install PHP & Composer
150161uses :shivammathur/setup-php@v2
151162with :
152163php-version :${{ matrix.php }}
153164extensions :${{ env.extensions }}
154- ini-values :memory_limit=-1, date.timezone='UTC'
165+ ini-values :${{ env.PHP_INI_VALUES }}
155166tools :composer:v2
156167
157168 -name :Determine composer cache directory
158- run :echo "COMPOSER_CACHE_DIR=~\\AppData\\Local\\Composer" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
169+ run :|
170+ echo "COMPOSER_CACHE_DIR=~\\AppData\\Local\\Composer" >> $GITHUB_ENV
159171
160172 -name :Cache dependencies installed with composer
161173uses :actions/cache@v3
@@ -169,7 +181,7 @@ jobs:
169181run :composer self-update
170182
171183 -name :Validate composer.json
172- run :composer validate
184+ run :composer validate --strict
173185
174186 -name :Install dependencies
175187run :composer install --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi