PHPackages                             joomla-projects/joomla-testing-robo - 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. joomla-projects/joomla-testing-robo

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

joomla-projects/joomla-testing-robo
===================================

Joomla automated testing swiss knife

1.0.3(5y ago)073.8k↓50%5[2 PRs](https://github.com/joomla-projects/joomla-testing-robo/pulls)GPL-2.0+PHPPHP &gt;=5.4.0

Since Dec 10Pushed 5y ago13 watchersCompare

[ Source](https://github.com/joomla-projects/joomla-testing-robo)[ Packagist](https://packagist.org/packages/joomla-projects/joomla-testing-robo)[ RSS](/packages/joomla-projects-joomla-testing-robo/feed)WikiDiscussions master Synced 1mo ago

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

Joomla Testing Robo tasks
=========================

[](#joomla-testing-robo-tasks)

Swiss knife for adding automated tests to your Joomla extensions, using Robo.li for task definition.

Installation
------------

[](#installation)

- composer install

Commands
--------

[](#commands)

All the included commands have setters and actual functions to be executed (using the previous setters). They are made to be stacked and executed by the robo `run()` command in the end.

### SeleniumStandaloneServer

[](#seleniumstandaloneserver)

Allows executing tasks related to a Selenium Server (not included)

#### Setters:

[](#setters)

- **setBinary($binary):** sets the location of the Selenium Server binary file. Default: *vendor/bin/selenium-server-standalone*
- **setURL($url):** sets the URL of the Selenium Server. Default: **
- **setDebug($debug = true):** Sets *-debug* option for Selenium server when set to true
- **setLogFile($logFile):** Defines a single log file for the Selenium server execution. Default: *selenium.log*
- **setTimeOut($seconds):** Sets a timeout to wait for the server to actually run when it's executed. Default: *60*
- **setWebdriver($name):** Allows setting a named webdriver to run the selenium tests on

#### Functions

[](#functions)

- **runSelenium():** Runs the selenium server.
- **waitForSelenium():** Waits for the selenium server to run, using the timeout defined in *setTimeout*
- **killSelenium():** Kills the Selenium Server using the provided URL in *setURL* (or the default one)

#### Examples

[](#examples)

Setting up the Selenium Server:

```
$this->taskSeleniumStandaloneServer()
    ->setBinary('/selenium-server-standalone')

    ->runSelenium()
    ->waitForSelenium()

    ->run()
    ->stopOnFail();

```

Killing the Selenium Server:

```
$this->taskSeleniumStandaloneServer()

    ->killSelenium()

    ->run();

```

### CMSSetup

[](#cmssetup)

Tasks for setting up the CMS to make it available for testing.

#### Setters

[](#setters-1)

- **setBaseTestsPath($baseTestsPath):** sets the path of the tests folder. **(required)**
- **setCmsRepository($cmsRepository):** Sets the Github owner/client combination for the CMS repository to use for cloning. Default: *joomla/joomla-cms*
- **setCmsPath($cmsPath):** Sets the actual path where the CMS will be installed (Apache folder). Default: *joomla*
- **setCachePath($cachePath):** Sets the path where the CMS will be cached. Default: *cache*
- **setCmsBranch($cmsBranch):** Sets the Joomla! branch to clone (based on the repository tags). Default: *staging*
- **setCmsCache($cmsCacheTime):** Sets the CMS cache time (in seconds). Default: 86400
- **setExecuteUser($executeUser):** Defines a user to change permissions to, if required.
- **setCertificatesPath($path):** Defines a path with the extra certificates to be added to the Joomla install, if needed.

#### Functions

[](#functions-1)

- **cloneCMSRepository()**: Clones the repository given the test folder, cache and repository details.
- **setupCMSPath()**: Actually sets up the CMS using the cache.
- **fixPathPermissions()**: Fixes any permission problem by setting the owner given in *setExecuteUser*.
- **setupHtAccess()**: Sets up the .htaccess file when invoked
- **appendCertificates()**: Appends the certificates using the certificate path. This is needed for some environments like Travis, so Joomla will not have problems installing extra languages.

#### Examples

[](#examples-1)

Simple set up of Joomla CMS:

```
$this->taskCMSSetup()
    ->setBaseTestsPath(__DIR__ . '/tests')

    ->cloneCMSRepository()
    ->setupCMSPath()

    ->run()
    ->stopOnFail();

```

### ApplicationSetup

[](#applicationsetup)

Functions to set up the actual application.

#### Setters

[](#setters-2)

- **setPackageCommand($packageCommand):** Sets the command to be executed for creating a package of the application. Default: *gulp release*
- **setPackageArgs($packageArgs):** Sets the arguments to be sent to the package. Default: *--skip-version*

#### Functions

[](#functions-2)

- **packageApplication():** Executes the application packager using the given parameters.

#### Examples

[](#examples-2)

Packaging the application:

```
$this->taskApplicationSetup()

    ->packageApplication()

    ->run()
    ->stopOnFail();

```

### Reporting

[](#reporting)

Methods to report back failures

#### Setters

[](#setters-3)

- **setCloudinaryCloudName($cloudinaryCloudName):** Sets up a Cloudinary cloud to have error images uploaded.
- **setCloudinaryApiKey($cloudinaryApiKey):** Sets up the Cloudinary API key.
- **setCloudinaryApiSecret($cloudinaryApiSecret):** Sets up the Cloudinary API secret.
- **setImagesToUpload($images):** Sets an array of images to be uploaded by Cloudinary
- **setFolderImagesToUpload($path):** Sets a full folder with images to be uploaded by Cloudinary
- **setGithubToken($githubToken):** Sets up the Github token to make reporting errors done to the Github Pull Request.
- **setGithubRepo($githubRepo):** Sets the owner/repo combination of the Github repository.
- **setGithubPR($githubPR):** Sets the number of the Github Pull Request.
- **setUploadedImagesURLs($uploadedImagesURLs):** When not using Cloudinary, allows setting up the array of image URLs to be appended to the comment in the PR.
- **setGithubCommentBody($githubCommentBody):** Sets the error message to be sent to Github. If there are any uploaded image URLs (or generated by Cloudinary) they will be appended at the end.

#### Functions

[](#functions-3)

- **publishCloudinaryImages():** Executes the actual push of the images to Cloudinary, and sets them up to be appended it to the PR comment when invoking the task.
- **publishGithubCommentToPR():** Comments in Github, using the comment body and optionally the uploaded image URLs.

#### Examples

[](#examples-3)

Actual reporting done to a Github PR, including an image:

```
$this->taskReporting()
    ->setCloudinaryCloudName('')
    ->setCloudinaryApiKey('')
    ->setCloudinaryApiSecret('')
    ->setGithubToken('')
    ->setGithubRepo('')
    ->setGithubPR('')
    ->setImagesToUpload([
        '/path/to/image',
        '/path/to/image'
    [)
    ->setGithubCommentBody('')

    ->publishCloudinaryImages()
    ->publishGithubCommentToPR()

    ->run()
    ->stopOnFail();

```

### CodeChecks

[](#codechecks)

Performs included code tests

#### Setters

[](#setters-4)

- **setBaseRepositoryPath($baseRepositoryPath):** Sets up the base repository path where tests will be executed. **Required**
- **setParseErrorsCheckFolders($parseErrorsCheckFolders):** Array of folders to check for parse errors in.
- **setPhpExecutable($phpExecutable):** Sets the php executable command. Default: *php*
- **setDebugLeftoversFolders($debugLeftoversFolders):** Sets the folders to check for debug leftovers
- **setCodeStyleStandardsFolder($codeStyleStandardsFolder):** Sets the folder where code style definitions are going to be downloaded/stored (using the repository).
- **setCodeStyleStandardsRepo($codeStyleStandardsRepo):** Sets the Github repository (owner/repo) with code style definitions, to download it. Default: *joomla/coding-standards*
- **setCodeStyleStandardsBranch($codeStyleStandardsBranch):** Branch of the coding standards repository to use. Default: *master*
- **setCodeStyleCheckFolders($codeStyleCheckFolders):** Folders to perform the code style check in.
- **setCodeStyleExcludedPaths($codeStyleExcludedPaths):** Array of paths (files/folders/path patterns) to exclude from the code style checking.

#### Functions

[](#functions-4)

- **checkForParseErrors():** Performs the parse error checking.
- **checkForDebugLeftovers():** Performs the debug leftovers check, to look for *var\_dump* or *console\_log* leftovers.
- **checkCodeStyle():** Performs the code style checking (phpcs), by downloading the standards from Github.

#### Examples

[](#examples-4)

Executing parse errors check

```
$this->taskCodeChecks()
    ->setBaseRepositoryPath()
    ->setParseErrorsCheckFolders()
    ->checkForParseErrors()
    ->run();

```

Debug leftovers check

```
$this->taskCodeChecks()
    ->setBaseRepositoryPath()
    ->setDebugLeftoversFolders()
    ->checkForDebugLeftovers()
    ->run();

```

Code style check

```
$this->taskCodeChecks()
    ->setBaseRepositoryPath()
    ->setCodeStyleCheckFolders()
    ->checkCodeStyle()
    ->run();

```

###  Health Score

35

—

LowBetter than 79% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 61.5% 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 ~482 days

Total

4

Last Release

1989d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/10b2f49e604583bbe4a444a3893954ec31d3dfa9a78d84550524964f1ab1b262?d=identicon)[jatitoam](/maintainers/jatitoam)

![](https://www.gravatar.com/avatar/643ae00141b3acb77c31cdee3f1e809be3e68636a85628671f51fcd399fb0921?d=identicon)[rdeutz](/maintainers/rdeutz)

![](https://www.gravatar.com/avatar/6b89c0ef287af1d634d97decb6589d83cc7d2bebdbbbfae65516bbc2d74a35ac?d=identicon)[javigomez](/maintainers/javigomez)

![](https://www.gravatar.com/avatar/7a7f9740581e2435af72213d6407fb58124d8ba5be9a53bce77c8d8abcfa770c?d=identicon)[yvesh](/maintainers/yvesh)

---

Top Contributors

[![jatitoam](https://avatars.githubusercontent.com/u/1500978?v=4)](https://github.com/jatitoam "jatitoam (8 commits)")[![wilsonge](https://avatars.githubusercontent.com/u/1986000?v=4)](https://github.com/wilsonge "wilsonge (2 commits)")[![rdeutz](https://avatars.githubusercontent.com/u/467356?v=4)](https://github.com/rdeutz "rdeutz (1 commits)")[![svenbluege](https://avatars.githubusercontent.com/u/3834825?v=4)](https://github.com/svenbluege "svenbluege (1 commits)")[![yvesh](https://avatars.githubusercontent.com/u/897638?v=4)](https://github.com/yvesh "yvesh (1 commits)")

---

Tags

testsqataskrobo

### Embed Badge

![Health badge](/badges/joomla-projects-joomla-testing-robo/health.svg)

```
[![Health](https://phpackages.com/badges/joomla-projects-joomla-testing-robo/health.svg)](https://phpackages.com/packages/joomla-projects-joomla-testing-robo)
```

###  Alternatives

[dealerdirect/phpcodesniffer-composer-installer

PHP\_CodeSniffer Standards Composer Installer Plugin

596161.9M1.9k](/packages/dealerdirect-phpcodesniffer-composer-installer)[dama/doctrine-test-bundle

Symfony bundle to isolate doctrine database tests and improve test performance

1.2k37.2M143](/packages/dama-doctrine-test-bundle)[edgedesign/phpqa

Analyze PHP code with one command.

5641.0M24](/packages/edgedesign-phpqa)

PHPackages © 2026

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