In ExpressionEngine 6 one of the big changes is a move away from member groups, to role base permissions. As such this is an area we’re working hard to ensure doesn’t present issues for existing sites, users, and existing permissions built out for users and member groups in templates when updating.
When working on the core integrations tests, we quickly realized that the existing tests, while working well, were difficult to maintain. Most specifically when we were faced with the task of updating them to work on the upcoming 6.0 release. After much discussion we decided it was time to re-write them.
Writing tests isn’t always fun or fast. But implementing them correctly allows us to catch and mitigate errors before they hit production, an effective way to mitigate pain and frustration all around. Tests also allow us to iterate on the ExpressionEngine core much faster with a higher level of confidence that our changes didn’t have “unintentional consequences”
It wasn’t an easy decision or task to the re-write the old ExpressionEngine tests into Cypress. But doing so allows us to more easily:
Test against 6 different versions of PHP
Run tests in parallel (greatly reducing the time needed to run tests)
Migrate them to github actions
Ultimately run them against our updated ExpressionEngine version 6 code.
In addition to this, it’s allowing us to better test the change from member_groups to role based permissions. Specifically when upgrading an existing ExpressionEngine site to version 6.
Re-writing these tests hasn’t been a small undertaking, but one we decided was needed to allow us to move the ExpressionEngine core forward at a faster and more reliable pace.
A special thanks for this effort goes out to Brad Akin, Yuri Salimovskiy and Bryan Nielsen for jumping into this effort.