codeigniter4 / codeigniter4/CodeIgniter4

Dev: Ensure tests are run in random

Open
#9,968 4 comments 1 reaction 0 assignees View on GitHub
dev help wanted testing
Dominant language
PHP
Stars
6k
Forks
2k
Avg merge
1d 11h
Merged PRs (30d)
73

Description

### PHP Version

8.5.0

### CodeIgniter4 Version

4.7.1-dev

Per [ChatGPT](https://chatgpt.com/s/t_69985949e68c8191af967ca124b1b7f7), tests need to run in random to enjoy the following benefits:

✔️ It reveals hidden dependencies
✔️ Forces true test isolation
✔️ Prevents flaky, misleading test results
✔️ Makes your test suite production-realistic

This issue has been initially tackled by #7717, but due to other complications it didn't fare well. As this is not a fairly easy task, I'm proposing we do it on pieces. Currently, our test suite runs in default order but should be random at some point (i.e., executionOrder="random").

Here's the plan, instead of one big PR changing all tests, we can do it by component (HTTP, Cache, Database, etc.). Then, after all tests run green on randomised testing, we set executionOrder in phpunit.xml to "random".

Please reference this issue for any PRs addressing pieces of this.

- [x] API: #9983
- [x] AutoReview: #10073
- [x] Autoloader: #10073
- [ ] Cache
- [x] CLI:
- #9998
- #10014
- [ ] Commands
- [ ] Config
- [x] Cookie: #10073
- [ ] Database
- [ ] DataCaster
- [ ] DataConverter
- [ ] Debug
- [ ] Email
- [ ] Encryption
- [ ] Entity
- [x] Events: #10073
- [x] Files: #10073
- [x] Filters: #10373
- [x] Format: #10073
- [ ] Helpers
- [ ] Honeypot
- [x] HotReloader: #10073
- [x] HTTP: #10372
- [ ] I18n
- [ ] Images
- [x] Language: #10073
- [x] Log: #10073
- [x] Pager: #10073
- [x] Publisher: #10073
- [x] RESTful: #10073
- [ ] Router
* #9967
- [x] Security
- #9969
- #10073
- [ ] Session
- [ ] Test
- [x] Throttle: #10073
- [x] Typography: #10073
- [ ] Validation
- [x] View: #10073

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.