PHPackages                             garvinhicking/typo3-tf-runtests - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. garvinhicking/typo3-tf-runtests

ActiveLibrary[Testing &amp; Quality](/categories/testing)

garvinhicking/typo3-tf-runtests
===============================

A testing runTests.sh example

0.3.0(1y ago)05GPL-2.0-or-laterShell

Since Jun 7Pushed 1y ago1 watchersCompare

[ Source](https://github.com/garvinhicking/typo3-tf-runtests)[ Packagist](https://packagist.org/packages/garvinhicking/typo3-tf-runtests)[ RSS](/packages/garvinhicking-typo3-tf-runtests/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (3)Versions (7)Used By (0)

typo3-tf-runtests
=================

[](#typo3-tf-runtests)

DRY Experimental base for using runTests.sh in extensions/projects/core

TL;DR: See section "Use of the new runTests.sh in a Composer-based TYPO3 project"

What is this?
=============

[](#what-is-this)

The TYPO3 core's runTests.sh file () is awesome:

- It integrates with the  which provides a basis to perform unit and functional tests with a TYPO3 framework
- It utilizes docker or podman, giving a choice of container implementation
- It offers easy xdebug integration for test execution
- It allows a wide range of supported PHP and database versions, great for CI matrix integration
- Low dependencies: Just docker or podman and bash, available on Windows WSL, Linux/Unix and macOS
- The same script with its parameters can be run locally and within CI
- it is actively maintained and utilized by the TYPO3 core

However, it has one large drawback:

- It cannot be used for TYPO3 extensions or TYPO3-based projects without being copied to those repositories. runTests.sh is part of the TYPO3 monorepo, so it cannot be included as a require-dev dependency.
- This means, any bugfix or any new feature (adding the latest and greatest docker engine) would mean you would have to update the script manually.

This repository acts as a playground to evaluate how `runTests.sh` could be modified to:

- Be provided as a composer package (maintained in typo3/typo3 core, offered as a subtree split repo)
- Be a drop-in replacement for the TYPO3 core, supporting all of its current functionality without a change. This means it will need to "live" within the monorepos "Build/Scripts/" directory.
- Allow customization through dispatching of self-maintained extending scripts and "understanding" parameters
- Provide a "setup" helper that copies typo3/testing-framework template files with adapted paths to the wanted places (TODO)

Central motivation / goals
==========================

[](#central-motivation--goals)

- "Don't Repeat Yourself" and try to prevent "Not Invented Here" syndrome: We all want testing just to work, and work great, and without the need to copy+paste things and by this taking over maintaining those scripts.
- "Convention over Configuration": runTests.sh is kind of opinionated, it does not want to support every need there is, but provide a common ground. Everything that needs customization should be done with self-maintained ADDITIONAL scripts. This is a good thing.
- Change the current runTests.sh as little as possible
- This is NOT meant as "EVERYTHING needs to be customized", it shall not become unmaintainable with flexibility, but instead be maintainable through better flexibility and outside usage feedback.

Experimental
============

[](#experimental)

**ALL OF THIS IS EXPERIMENTAL**

Use at your own care/risk.

There are two use cases:

Use of the new runTests.sh in TYPO3 core (monorepo)
---------------------------------------------------

[](#use-of-the-new-runtestssh-in-typo3-core-monorepo)

The setup would be that this repository will cease to exist.

The files from Build/Scripts/ would all be moved to the `typo3/typo3` repository.

From there, a subtree split would create a package like `typo3/runtests`, containing the files of `Build/Scripts`.

That means inside `Build/Scripts` a `composer.json` file would need to be created to contain that metadata. A `bin` configuration there would be needed, and probably `require-dev` dependencies.

To simulate this you can:

- Take a `typo3/typo3` GIT clone (`main`)
- Copy the files from `Build/Scripts/` of this repository into the same directory of the monorepo
- **REMOVE** `Build/Scripts/runTests.env`! For the core, the settings are contained inside `runTests.sh`.
- Execute `Build/Scripts/runTests.sh` like before. Nothing should change. If something changes, it's a bug and not intended.

Use of the new runTests.sh in a Composer-based TYPO3 project
------------------------------------------------------------

[](#use-of-the-new-runtestssh-in-a-composer-based-typo3-project)

For this I've created a separate project, so you can:

- `git clone https://github.com/garvinhicking/tf-basics-project`
- `cd tf-basics-project`
- `git checkout runtests` (**important**)
- `composer install`
- `./vendor/bin/runTests.sh -s unit`
- `./vendor/bin/runTests.sh -s custom -- myStan`

This project comes with a predefined configuration `runTests.env` that is used, and some stub tests and config files.

There might even be a generator for such a `runTests.env` file, but that is beyond scope for now.

Just check out this repository, you should be able to adapt that with any custom extension or project, you need:

- A `composer.json` requiring TYPO3 (duh) and require-dev this `garvinhicking/typo3-tf-runtests` repository (for now; in the future a `typo3/runtests` package hopefully)
- The mentioned `runTests.env` file
- Configuration files for `phpunit`, `phpstan` and whatever else you plan to utilize
- Any kind of custom `custom-runTests.xxx.sh` dispatchees
- PHP files / extension files you want to test
- Maybe some `.ddev` configuration, but `runTests` is fully functional without `ddev`.

CAVEATS
=======

[](#caveats)

- There are A LOT of variables that need assignment
- The initial required pull of "runTests.sh" makes it impossible to use the provided `runTests.sh`file to use that for a `composer install`. Only after composer has initially fetched it, you could use `vendor/bin/runTests.sh -s composerInstall` to use the dockerized setup. Classical chicken/egg. For the TYPO3 mono-repo instance this is not an issue, because `runTests.sh` "lives" there and does not require composer to actually fetch it.

Feedback
========

[](#feedback)

Yes. Please. Inspire people to share.

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity34

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

704d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/273326?v=4)[Garvin Hicking](/maintainers/garvinhicking)[@garvinhicking](https://github.com/garvinhicking)

---

Top Contributors

[![garvinhicking](https://avatars.githubusercontent.com/u/273326?v=4)](https://github.com/garvinhicking "garvinhicking (22 commits)")

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/garvinhicking-typo3-tf-runtests/health.svg)

```
[![Health](https://phpackages.com/badges/garvinhicking-typo3-tf-runtests/health.svg)](https://phpackages.com/packages/garvinhicking-typo3-tf-runtests)
```

###  Alternatives

[phpspec/prophecy

Highly opinionated mocking framework for PHP 5.3+

8.5k551.7M682](/packages/phpspec-prophecy)[vimeo/psalm

A static analysis tool for finding errors in PHP applications

5.8k77.5M6.7k](/packages/vimeo-psalm)[brianium/paratest

Parallel testing for PHP

2.5k118.8M754](/packages/brianium-paratest)[beberlei/assert

Thin assertion library for input validation in business models.

2.4k96.9M570](/packages/beberlei-assert)[mikey179/vfsstream

Virtual file system to mock the real file system in unit tests.

1.4k108.0M2.7k](/packages/mikey179-vfsstream)[orchestra/testbench

Laravel Testing Helper for Packages Development

2.2k39.1M32.1k](/packages/orchestra-testbench)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
