mirror of https://github.com/FriendsOfTYPO3/tea.git synced 2024-09-19 23:36:13 +02:00
Mirror of TYPO3 Extension tea, managed by the Best Practice Team https://typo3.org/community/teams/best-practices
Find a file
Oliver Klee ef38d7d84b
[TASK] Drop the .phar suffix from the tools (#204)
PhpStorm by default indexes `*.phar` files. For our current set of
tools, we do not want this. (This keeps PhpStorm from complaining
about multiple versions of the same class.)

Also mark the tools as binary for git.
2021-02-24 12:02:56 +01:00
.github/workflows [FEATURE] Add TER release via github actions (#189) 2021-02-22 16:59:15 +01:00
.gitlab Add composer normalize phive (#193) 2021-02-18 10:44:35 +01:00
Classes [CLEANUP] Fix PHP_Codesniffer issues 2019-12-07 12:13:32 +01:00
Configuration [CLEANUP] Autoformat all files (#175) 2020-12-01 23:12:34 +01:00
Documentation [TASK] Prepare documentation rendering (#157) 2020-11-29 18:28:34 +01:00
Resources [CLEANUP] Autoformat all files (#175) 2020-12-01 23:12:34 +01:00
Tests [TASK] Enable tests in t3 v10 (#77) 2020-07-23 12:41:27 +02:00
tools [TASK] Drop the .phar suffix from the tools (#204) 2021-02-24 12:02:56 +01:00
.editorconfig [CLEANUP] Adopt .editorconfig settings from the TYPO3 core (#176) 2020-11-29 21:15:29 +01:00
.gitattributes [TASK] Drop the .phar suffix from the tools (#204) 2021-02-24 12:02:56 +01:00
.gitignore [TASK] Prepare documentation rendering (#157) 2020-11-29 18:28:34 +01:00
.php_cs.php [TASK] Add more files to php sniffing and fixing (#123) 2020-10-14 11:42:00 +02:00
CHANGELOG.md [FEATURE] Also run the CI build once a week (#160) 2020-11-21 17:58:35 +01:00
CODE_OF_CONDUCT.md [TASK] Use a Trainer Network contact email address in the CoC (#6) 2019-11-27 15:07:11 +01:00
codeception.yml [CLEANUP] Autoformat all files (#175) 2020-12-01 23:12:34 +01:00
composer.json [TASK] Drop the .phar suffix from the tools (#204) 2021-02-24 12:02:56 +01:00
ext_emconf.php [TASK] Allow TYPO3 10 in composer.json and ext_emconf.php (#27) 2019-12-07 12:48:34 +01:00
ext_localconf.php [BUGFIX] Keep the global namespace clean in ext_localconf.php (#39) 2019-12-07 19:15:24 +01:00
ext_tables.sql [CLEANUP] Autoformat all files (#175) 2020-12-01 23:12:34 +01:00
LICENSE [TASK] Change from GPL V3+ to GPL V2+ (#40) 2019-08-08 12:38:56 +02:00
phive.xml [TASK] Drop the .phar suffix from the tools (#204) 2021-02-24 12:02:56 +01:00
phpcs.xml [TASK] Rename dist files (#112) 2020-10-07 14:03:20 +02:00
README.md Update README.md (#197) 2021-02-22 16:53:56 +01:00

Tea example

GitHub CI Status Gitlab CI Status Latest Stable Version Total Downloads Latest Unstable Version License

This TYPO3 extension is an example of best practices in continuous integration and automated code checks, also writing unit and functional tests for Extbase/Fluid-based extensions for TYPO3 CMS using PHPUnit.

It also is an example for best practices for extbase/fluid.

For information on the different ways to execute the tests, please have a look at the handout to my workshops on test-driven development (TDD).

This manual is rendered for reading at https://docs.typo3.org/p/oliverklee/tea/master/en-us/Index.html.

Feature list

All of those checks are available in Github Actions and in Gitlab CI.

PHP Lint check by php -l

composer ci:php:lint

PHP CodeStyle check by php-cs-fixer

composer ci:php:codestyle

PHP Sniff by phpcs

composer ci:php:sniff

PHP Copypaste check by phpcpd

composer ci:php:copypaste

JSON Lint check by jsonlint

composer ci:json:lint

YAML Lint check by yaml-lint

composer ci:yaml:lint

TypoScript Lint by typoscript-lint

composer ci:ts:lint

Composer Normalize by composer-normalize

composer ci:composer:normalize

Running unit tests

composer ci:tests:unit

Running functional tests

composer ci:tests:functional

Running all tests

composer ci:tests

Running the tests in PhpStorm

File > Settings > Languages & Frameworks > PHP > Test Frameworks

  • (*) Use Composer autoloader
  • Path to script: select .Build/vendor/autoload.php in your project folder

In the Run configurations, edit the PHPUnit configuration and use these settings so this configuration can serve as a template:

  • Directory: use the Tests/Unit directory in your project
  • (*) Use alternative configuration file
  • use .Build/vendor/nimut/testing-framework/res/Configuration/UnitTests.xml in your project folder
  • add the following environment variables:
    • typo3DatabaseUsername
    • typo3DatabasePassword
    • typo3DatabaseHost
    • typo3DatabaseName

Unit tests configuration

In the Run configurations, copy the PHPUnit configuration and use these settings:

  • Directory: use the Tests/Unit directory in your project

Functional tests configuration

In the Run configurations, copy the PHPUnit configuration and use these settings:

  • Directory: use the Tests/Functional directory in your project
  • (x) Use alternative configuration file
  • use .Build/vendor/nimut/testing-framework/res/Configuration/FunctionalTests.xml

Running the acceptance tests

On the command line

  1. make sure you have Chrome installed on your machine
  2. composer update codeception/codeception (just in case)
  3. download the latest version of ChromeDriver
  4. unzip it
  5. chromedriver --url-base=wd/hub
  6. .Build/vendor/bin/codecept run (in another terminal)

In PhpStorm

  1. make sure the "Codeception Framework" plugin is activated
  2. right-click on Tests/Acceptance/StarterCest.php
  3. Run 'Acceptance (Codeception)'

Security

Libraries and extensions do not need the security check as they should not have any restrictions concerning the other libraries they are installed alongside with (unless those would create breakage), and they also do not have a composer.lock which usually is the source for security checks.

Instead, the projects (i.e., for TYPO3 installations) need to have the security checks.

Documentation rendering

In order to render documentation, first of all, clone repository

git clone https://github.com/TYPO3-Documentation/tea.git

then go to extension root

cd tea

and follow the TYPO3 documentation quickstart guide.

More Documentation

Other example projects

  • Selenium demo for using Selenium with PHPUnit
  • Anagram finder is the finished result of a code kata for TDD
  • Coffee example is my starting point for demonstrating TDD with TYPO3 CMS
  • TDD Seed for starting PHPUnit projects with Composer (without TYPO3 CMS)