christophwurst / nextcloud_testing
Simple and fast unit and integration testing framework for Nextcloud, based on PHPUnit
Installs: 514 200
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: ^7.4|^8.0
- php-webdriver/webdriver: ^1.9
- phpunit/phpunit: ^8.0|^9.0|^10.0
README
Simple and fast unit and integration testing framework for Nextcloud 25+, based on PHPUnit
Features
- Minimal setUp/tearDown overhead for unit tests
- Simple trait-based mechanism to reset database after integration tests
- Based on PHPUnit
Unit Tests
Use TestCase
as base class for your test case:
<?php use ChristophWurst\Nextcloud\Testing\TestCase; class ControllerTest extends TestCase { … your test code … }
Integration Tests
Include the DatabaseTransaction
trait in your test case and any changes to the database will be rolled back after each test:
<?php use ChristophWurst\Nextcloud\Testing\DatabaseTransaction; use ChristophWurst\Nextcloud\Testing\TestCase; class ControllerTest extends TestCase { use DatabaseTransaction; … your test code … }
Selenium Tests
Include the Selenium
trait in your test case and access the Webdriver instance via $this->webDriver
:
<?php use ChristophWurst\Nextcloud\Testing\Selenium; use ChristophWurst\Nextcloud\Testing\TestCase; class ControllerTest extends TestCase { use Selenium; public function testWithSelenium() { … $this->webDriver->get('http://localhost:8080/index.php/login'); … } }
This framework targets Sauce Labs as testing back-end that runs the test
browser instances. Hence, it is necessary to set the SAUCE_USERNAME
and SAUCE_ACCESS_KEY
env
variables. SELENIUM_BROWSER
lets you choose the browser to run your tests against.
Test Users
Include the TestUser
trait in your test case to conveniently generate new test users. The trait
will create a new user with a random UID (including collision detection).
<?php use ChristophWurst\Nextcloud\Testing\TestCase; use ChristophWurst\Nextcloud\Testing\TestUser; class ControllerTest extends TestCase { use TestUser; public function testWithSelenium() { … $user = $this->createTestUser(); … } }
The returned user is of type IUser
. You can read its UID with $user->getUID()
. Note that the
user is not removed after the test.