-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
/
TestsRunJS.php
57 lines (45 loc) · 1.93 KB
/
TestsRunJS.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\TestRunner\Commands;
use Piwik\Plugin\ConsoleCommand;
class TestsRunJS extends ConsoleCommand
{
protected function configure()
{
$this->setName('tests:run-js');
$this->setDescription('Run javascript tests');
$this->addRequiredValueOption('matomo-url', null, 'Custom matomo url. Defaults to http://localhost');
$this->addOptionalValueOption('plugin', null, 'The plugin to run tests for. If not supplied, all tests are run.');
}
protected function doExecute(): int
{
$input = $this->getInput();
$output = $this->getOutput();
$matomoUrl = $input->getOption('matomo-url') ?? 'http://localhost';
$plugin = $input->getOption('plugin');
$screenshotTestingDir = PIWIK_INCLUDE_PATH . "/tests/lib/screenshot-testing";
$javascriptTestingDir = PIWIK_INCLUDE_PATH . "/tests/javascript";
$cmdNode = "cd '$javascriptTestingDir' && NODE_PATH='$screenshotTestingDir/node_modules' node testrunnerNode.js '$matomoUrl/tests/javascript/'";
if (!empty($plugin)) {
$cmdNode .= ' --plugin=' . escapeshellarg($plugin);
}
$output->writeln('Executing command: <info>' . $cmdNode . '</info>');
$output->writeln('');
passthru($cmdNode, $returnCodeNode);
$cmdPhantom = "phantomjs $javascriptTestingDir/testrunnerPhantom.js '$matomoUrl/tests/javascript/'";
if (!empty($plugin)) {
$cmdPhantom .= ' --plugin=' . escapeshellarg($plugin);
}
$output->writeln('');
$output->writeln('');
$output->writeln('Executing command: <info>' . $cmdPhantom . '</info>');
$output->writeln('');
passthru($cmdPhantom, $returnCodePhantom);
return $returnCodeNode + $returnCodePhantom;
}
}