├── cache └── .htaccess ├── inc ├── .htaccess ├── pages │ ├── Error404Page.php │ ├── InfoPage.php │ ├── RunPage.php │ ├── ProjectsPage.php │ ├── LoginPage.php │ ├── Error500Page.php │ ├── LogoutPage.php │ ├── SaverunPage.php │ ├── ApiDebugPage.php │ ├── ProjectPage.php │ └── ClientPage.php ├── actions │ ├── LogoutAction.php │ ├── InfoAction.php │ ├── ApihelpAction.php │ ├── PingAction.php │ ├── CleanupAction.php │ ├── WiperunAction.php │ ├── ProjectsAction.php │ ├── SwarmstateAction.php │ ├── ClientAction.php │ ├── WipejobAction.php │ ├── GetrunAction.php │ ├── ResultAction.php │ ├── LoginAction.php │ ├── SaverunAction.php │ └── AddjobAction.php ├── initError.php ├── Api.php └── Client.php ├── config ├── .htaccess ├── version.ini ├── sample-robots.txt ├── sample-localSettings.php ├── sample-.htaccess ├── defaultSettings.json ├── sample-nginx.conf └── sample-localSettings.json ├── scripts ├── .htaccess ├── README.md ├── generateRunToken.php ├── repl.php ├── queryBrowserSets.php ├── clearJobsAndClients.php ├── fixRunresultCorruption.php ├── refreshProjectToken.php ├── abortPendingRuns.php ├── purge.php ├── install.php └── addjob │ └── README.md ├── .eslintignore ├── .mailmap ├── favicon.ico ├── img ├── os-ios.png ├── os-win7.png ├── os-win8.png ├── browser-ie.png ├── os-android.png ├── os-macosx.png ├── os-winxp.png ├── browser-edge.png ├── browser-ie-6.png ├── browser-ie-8.png ├── device-ipad.png ├── browser-android.png ├── browser-chrome.png ├── browser-firefox.png ├── browser-opera.png ├── browser-safari.png ├── browser-unknown.png ├── browser-yandex.png ├── device-iphone.png ├── browser-chromium.png ├── browser-edge-legacy.png └── browser-webkit_nightly.png ├── docs ├── img │ ├── 2009-home.png │ ├── 2012-home.png │ ├── 2012-job.png │ ├── 2013-job.png │ ├── 2023-job.png │ ├── ts-swarm.png │ ├── 2012-project.png │ ├── 2013-client.png │ ├── 2013-clients.png │ ├── 2013-project.png │ ├── 2013-home-open.png │ ├── 2013-projects.png │ ├── 2013-runresult.png │ ├── 2013-runresult2.png │ ├── 2013-clients-names.png │ ├── 2013-home-restricted.png │ ├── 2023-clients-running.png │ └── 2023-clients-finished.png ├── API.md ├── History.md └── Code.md ├── external ├── bootstrap │ ├── img │ │ ├── glyphicons-halflings.png │ │ └── glyphicons-halflings-white.png │ └── js │ │ └── bootstrap-dropdown.js └── jquery │ └── MIT-LICENSE.txt ├── vendor ├── ua-parser │ └── uap-php │ │ ├── .gitmodules │ │ ├── src │ │ ├── Exception │ │ │ ├── DomainException.php │ │ │ ├── ReaderException.php │ │ │ ├── FetcherException.php │ │ │ ├── InvalidArgumentException.php │ │ │ └── FileNotFoundException.php │ │ ├── Result │ │ │ ├── Device.php │ │ │ ├── AbstractSoftware.php │ │ │ ├── AbstractClient.php │ │ │ ├── UserAgent.php │ │ │ ├── OperatingSystem.php │ │ │ ├── AbstractVersionedSoftware.php │ │ │ └── Client.php │ │ ├── Util │ │ │ ├── Logfile │ │ │ │ ├── ReaderInterface.php │ │ │ │ ├── ApacheCommonLogFormatReader.php │ │ │ │ └── AbstractReader.php │ │ │ ├── Fetcher.php │ │ │ └── Converter.php │ │ ├── Command │ │ │ ├── ParserCommand.php │ │ │ ├── FetchCommand.php │ │ │ ├── UpdateCommand.php │ │ │ └── ConvertCommand.php │ │ ├── DeviceParser.php │ │ ├── OperatingSystemParser.php │ │ ├── Parser.php │ │ ├── UserAgentParser.php │ │ └── AbstractParser.php │ │ ├── LICENSE │ │ ├── update-resources.sh │ │ ├── bin │ │ └── uaparser │ │ ├── composer.json │ │ └── README.md ├── autoload.php ├── composer │ ├── autoload_namespaces.php │ ├── autoload_classmap.php │ ├── autoload_psr4.php │ ├── platform_check.php │ ├── ca-bundle │ │ ├── LICENSE │ │ ├── composer.json │ │ └── README.md │ ├── LICENSE │ ├── autoload_static.php │ ├── installed.php │ └── autoload_real.php └── bin │ └── uaparser ├── .eslintrc.json ├── package.json ├── CONTRIBUTING.md ├── .gitignore ├── composer.json ├── js ├── result.js ├── addjob.js ├── pretty.js └── testswarm.js ├── index.php ├── AUTHORS.txt ├── LICENSE.txt ├── .phan └── config.php ├── test └── pretty.js ├── api.php └── .github └── workflows └── CI.yaml /cache/.htaccess: -------------------------------------------------------------------------------- 1 | Deny from all 2 | -------------------------------------------------------------------------------- /inc/.htaccess: -------------------------------------------------------------------------------- 1 | Deny from all 2 | -------------------------------------------------------------------------------- /config/.htaccess: -------------------------------------------------------------------------------- 1 | Deny from all 2 | -------------------------------------------------------------------------------- /config/version.ini: -------------------------------------------------------------------------------- 1 | 1.0.0-alpha 2 | -------------------------------------------------------------------------------- /scripts/.htaccess: -------------------------------------------------------------------------------- 1 | Deny from all 2 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /external 2 | /vendor 3 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | Michał Gołębiowski-Owczarek 2 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/favicon.ico -------------------------------------------------------------------------------- /img/os-ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/os-ios.png -------------------------------------------------------------------------------- /img/os-win7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/os-win7.png -------------------------------------------------------------------------------- /img/os-win8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/os-win8.png -------------------------------------------------------------------------------- /img/browser-ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-ie.png -------------------------------------------------------------------------------- /img/os-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/os-android.png -------------------------------------------------------------------------------- /img/os-macosx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/os-macosx.png -------------------------------------------------------------------------------- /img/os-winxp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/os-winxp.png -------------------------------------------------------------------------------- /img/browser-edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-edge.png -------------------------------------------------------------------------------- /img/browser-ie-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-ie-6.png -------------------------------------------------------------------------------- /img/browser-ie-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-ie-8.png -------------------------------------------------------------------------------- /img/device-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/device-ipad.png -------------------------------------------------------------------------------- /docs/img/2009-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2009-home.png -------------------------------------------------------------------------------- /docs/img/2012-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2012-home.png -------------------------------------------------------------------------------- /docs/img/2012-job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2012-job.png -------------------------------------------------------------------------------- /docs/img/2013-job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-job.png -------------------------------------------------------------------------------- /docs/img/2023-job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2023-job.png -------------------------------------------------------------------------------- /docs/img/ts-swarm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/ts-swarm.png -------------------------------------------------------------------------------- /img/browser-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-android.png -------------------------------------------------------------------------------- /img/browser-chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-chrome.png -------------------------------------------------------------------------------- /img/browser-firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-firefox.png -------------------------------------------------------------------------------- /img/browser-opera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-opera.png -------------------------------------------------------------------------------- /img/browser-safari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-safari.png -------------------------------------------------------------------------------- /img/browser-unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-unknown.png -------------------------------------------------------------------------------- /img/browser-yandex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-yandex.png -------------------------------------------------------------------------------- /img/device-iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/device-iphone.png -------------------------------------------------------------------------------- /docs/img/2012-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2012-project.png -------------------------------------------------------------------------------- /docs/img/2013-client.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-client.png -------------------------------------------------------------------------------- /docs/img/2013-clients.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-clients.png -------------------------------------------------------------------------------- /docs/img/2013-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-project.png -------------------------------------------------------------------------------- /img/browser-chromium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-chromium.png -------------------------------------------------------------------------------- /docs/img/2013-home-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-home-open.png -------------------------------------------------------------------------------- /docs/img/2013-projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-projects.png -------------------------------------------------------------------------------- /docs/img/2013-runresult.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-runresult.png -------------------------------------------------------------------------------- /docs/img/2013-runresult2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-runresult2.png -------------------------------------------------------------------------------- /img/browser-edge-legacy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-edge-legacy.png -------------------------------------------------------------------------------- /img/browser-webkit_nightly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/img/browser-webkit_nightly.png -------------------------------------------------------------------------------- /docs/img/2013-clients-names.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-clients-names.png -------------------------------------------------------------------------------- /docs/img/2013-home-restricted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2013-home-restricted.png -------------------------------------------------------------------------------- /docs/img/2023-clients-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2023-clients-running.png -------------------------------------------------------------------------------- /docs/img/2023-clients-finished.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/docs/img/2023-clients-finished.png -------------------------------------------------------------------------------- /external/bootstrap/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/external/bootstrap/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /external/bootstrap/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jquery/testswarm/HEAD/external/bootstrap/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "uap-core"] 2 | path = uap-core 3 | url = https://github.com/ua-parser/uap-core.git 4 | branch = master 5 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "parserOptions": { 4 | "ecmaVersion": 3, 5 | "sourceType": "script" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /config/sample-robots.txt: -------------------------------------------------------------------------------- 1 | # https://github.com/jquery/testswarm/issues/146 2 | 3 | User-agent: * 4 | Disallow: /client/ 5 | Disallow: /result/ 6 | Disallow: /*.php 7 | Disallow: /*?* 8 | -------------------------------------------------------------------------------- /vendor/autoload.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/composer/InstalledVersions.php', 10 | ); 11 | -------------------------------------------------------------------------------- /vendor/composer/autoload_psr4.php: -------------------------------------------------------------------------------- 1 | array($vendorDir . '/ua-parser/uap-php/src'), 10 | 'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), 11 | ); 12 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/src/Exception/DomainException.php: -------------------------------------------------------------------------------- 1 | setTitle( Page::getHttpStatusMsg( 404 ) ); 15 | $this->setRobots( "noindex,nofollow" ); 16 | 17 | return '
The page you requested could not be found.
'; 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/src/Exception/FetcherException.php: -------------------------------------------------------------------------------- 1 | family; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/src/Util/Logfile/ReaderInterface.php: -------------------------------------------------------------------------------- 1 | toString(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created while installing/using TestSwarm 2 | .htaccess 3 | cache/* 4 | config/.testswarm_eval_history 5 | config/localSettings.json 6 | config/localSettings.php 7 | robots.txt 8 | node_modules 9 | package-lock.json 10 | 11 | # Prod dependencies 12 | /vendor/**/.git 13 | /vendor/**/.gitignore 14 | /vendor/**/.travis.yml 15 | /vendor/**/phpunit.xml.dist 16 | /vendor/psr/log/Psr/Log/Test 17 | /vendor/symfony/*/Tests 18 | 19 | # Files generated by editors 20 | .project 21 | 22 | # Files generated by operating systems 23 | ## Mac OS X 24 | .DS_Store 25 | ._* 26 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "php": ">=5.4.0", 4 | "ua-parser/uap-php": "3.9.3" 5 | }, 6 | "require-dev": { 7 | "phan/phan": "5.4.1", 8 | "php-parallel-lint/php-parallel-lint": "1.3.2" 9 | }, 10 | "scripts": { 11 | "lint": "parallel-lint . --exclude external --exclude vendor --exclude node_modules", 12 | "phan": "phan --allow-polyfill-parser", 13 | "test": [ 14 | "@lint", 15 | "@phan" 16 | ] 17 | }, 18 | "replace": { 19 | "symfony/polyfill-ctype": "1.99", 20 | "symfony/polyfill-mbstring": "1.99" 21 | }, 22 | "config": { 23 | "platform": { 24 | "php": "7.2" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Dave Olsen, http://dmolsen.com 2 | Licensed under the MIT license 3 | 4 | ua-parser-php is a PHP-based pseudo-port of the ua-parser project. Learn more about the ua-parser project at: 5 | 6 | http://code.google.com/p/ua-parser/ 7 | 8 | The user agents data from the ua-parser project is licensed under the Apache license. 9 | spyc-0.5, for loading the YAML, is licensed under the MIT license. 10 | The initial list of generic feature phones & smartphones came from Mobile Web OSP under the MIT license 11 | The initial list of spiders was taken from Yiibu's profile project under the MIT license. -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/src/Result/UserAgent.php: -------------------------------------------------------------------------------- 1 | formatVersion($this->major, $this->minor, $this->patch); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /config/sample-.htaccess: -------------------------------------------------------------------------------- 1 | # testswarm.ini isn't used anymore. 2 | # But we're being nice for when it was kept during an upgrade 3 | # (as it may contain sensitive data). 4 | 5 | Order allow,deny 6 | Deny from all 7 | 8 | 9 | RewriteEngine On 10 | RewriteBase /testswarm 11 | 12 | # Don't touch real files and directories (such as ./js/ and ./css/) 13 | RewriteCond %{REQUEST_FILENAME} -f [OR] 14 | RewriteCond %{REQUEST_FILENAME} -d 15 | RewriteRule ^ - [L] 16 | 17 | # Remove any trailing slash 18 | RewriteRule ^(.*)/$ $1 [R=301,QSA] 19 | 20 | # Dynamic action paths 21 | RewriteRule ^([a-z]*)$ index.php?action=$1 [QSA] 22 | RewriteRule ^([a-z]*)/(.*)$ index.php?action=$1&item=$2 [QSA] 23 | -------------------------------------------------------------------------------- /inc/actions/LogoutAction.php: -------------------------------------------------------------------------------- 1 | getContext()->getAuth() ) { 20 | if ( !$this->doRequireAuth() ) { 21 | return; 22 | } 23 | } 24 | 25 | $this->getContext()->flushAuth(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/src/Result/OperatingSystem.php: -------------------------------------------------------------------------------- 1 | formatVersion($this->major, $this->minor, $this->patch, $this->patchMinor); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /scripts/generateRunToken.php: -------------------------------------------------------------------------------- 1 | setDescription( 16 | 'Generates a new run token for clients and its hash for the configuration file.' 17 | ); 18 | } 19 | 20 | protected function execute() { 21 | $runToken = sha1( mt_rand() ); 22 | $runTokenHash = sha1( $runToken ); 23 | $this->out( "New run token: $runToken" ); 24 | $this->out( "New token hash: $runTokenHash" ); 25 | } 26 | } 27 | 28 | $script = GenerateRunTokenScript::newFromContext( $swarmContext ); 29 | $script->run(); 30 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/update-resources.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | function try_catch() { 4 | output=`"$@" &>/dev/stdout` 5 | if [ $? -gt 0 ]; then 6 | echo -e "Command $@ failed\n\n$output" 7 | exit 1 8 | fi 9 | } 10 | 11 | try_catch git pull 12 | try_catch git submodule foreach git pull origin master 13 | try_catch bin/uaparser ua-parser:convert uap-core/regexes.yaml 14 | try_catch vendor/bin/phpunit --stop-on-failure 15 | try_catch git commit -a -m "Scheduled resource update" 16 | try_catch git push origin master 17 | new_version=`git tag | sort --version-sort | tail -n 1 | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}'` 18 | try_catch git tag $new_version 19 | git push origin $new_version 20 | -------------------------------------------------------------------------------- /inc/actions/InfoAction.php: -------------------------------------------------------------------------------- 1 | getContext(); 16 | $conf = $context->getConf(); 17 | $request = $context->getRequest(); 18 | 19 | $info = array( 20 | "software" => array( 21 | "website" => "https://github.com/jquery/testswarm", 22 | "versionInfo" => $context->getVersionInfo(), 23 | ), 24 | "conf" => array( 25 | "general" => $conf->general, 26 | "web" => $conf->web, 27 | "client" => $conf->client, 28 | ), 29 | ); 30 | 31 | $this->setData( $info ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/src/Result/AbstractVersionedSoftware.php: -------------------------------------------------------------------------------- 1 | family, $this->toVersion()))); 21 | } 22 | 23 | /** @return string */ 24 | protected function formatVersion() 25 | { 26 | return join('.', array_filter(func_get_args(), 'is_numeric')); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /inc/actions/ApihelpAction.php: -------------------------------------------------------------------------------- 1 | getContext(); 17 | $conf = $context->getConf(); 18 | $request = $context->getRequest(); 19 | 20 | $actions = array(); 21 | foreach ( $swarmAutoLoadClasses as $class => $file ) { 22 | if ( strlen( $class ) > 6 && substr( $class, -6 ) === 'Action' ) { 23 | $actions[] = strtolower( substr( $class, 0, -6 ) ); 24 | } 25 | } 26 | 27 | $this->setData( array( 28 | 'action' => $actions, 29 | 'format' => Api::getFormats(), 30 | ) ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /js/result.js: -------------------------------------------------------------------------------- 1 | /** 2 | * JavaScript file for the "result" page in the browser. 3 | * 4 | * @author Timo Tijhof 5 | * @since 1.0 6 | * @package TestSwarm 7 | */ 8 | /* eslint-env browser */ 9 | /* global jQuery */ 10 | jQuery(function( $ ) { 11 | 12 | // Even-out scrollbars 13 | $( ".swarm-result-frame" ).on( "load", function() { 14 | var frame = this, 15 | frameDoc = frame.contentWindow.document; 16 | setTimeout( function() { 17 | frame.height = $(frameDoc).height(); 18 | }, 50); 19 | }); 20 | 21 | // Popup links 22 | $( ".swarm-popuplink" ).on( "click", function( e ) { 23 | window.open( this.href, "_blank", [ 24 | "menubar=no", 25 | "toolbar=no", 26 | "location=yes", 27 | "personalbar=no", 28 | "status=yes", 29 | "resizable=yes", 30 | "scrollbars=yes", 31 | "minimizable=yes" 32 | ].join( "," ) ); 33 | e.preventDefault(); 34 | }); 35 | 36 | }); 37 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/src/Result/Client.php: -------------------------------------------------------------------------------- 1 | originalUserAgent = $originalUserAgent; 32 | } 33 | 34 | public function toString() 35 | { 36 | return $this->ua->toString() . '/' . $this->os->toString(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/composer/platform_check.php: -------------------------------------------------------------------------------- 1 | = 50400)) { 8 | $issues[] = 'Your Composer dependencies require a PHP version ">= 5.4.0". You are running ' . PHP_VERSION . '.'; 9 | } 10 | 11 | if ($issues) { 12 | if (!headers_sent()) { 13 | header('HTTP/1.1 500 Internal Server Error'); 14 | } 15 | if (!ini_get('display_errors')) { 16 | if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { 17 | fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); 18 | } elseif (!headers_sent()) { 19 | echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; 20 | } 21 | } 22 | trigger_error( 23 | 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 | E_USER_ERROR 25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /vendor/ua-parser/uap-php/src/Exception/InvalidArgumentException.php: -------------------------------------------------------------------------------- 1 | the TestSwarm docs." 13 | }, 14 | "web": { 15 | "server": null, 16 | "contextpath": "/", 17 | "title": "TestSwarm", 18 | "ajaxUpdateInterval": 5 19 | }, 20 | "client": { 21 | "cooldownSleep": 0, 22 | "nonewrunsSleep": 10, 23 | "pingTime": 30, 24 | "pingTimeMargin": 10, 25 | "runTimeout": 180, 26 | "saveReqTimeout": 10, 27 | "saveRetryMax": 3, 28 | "saveRetrySleep": 5, 29 | "runTokenHash": false, 30 | "refreshControl": 0 31 | }, 32 | "storage": { 33 | "cacheDir": "$1/cache" 34 | }, 35 | "userAgents": {}, 36 | "browserSets": {}, 37 | "debug": { 38 | "showExceptionDetails": false, 39 | "phpErrorReporting": false, 40 | "dbLogQueries": false 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /js/addjob.js: -------------------------------------------------------------------------------- 1 | /** 2 | * JavaScript file for the "addjob" page. 3 | * 4 | * @author Timo Tijhof 5 | * @since 1.0.0 6 | * @package TestSwarm 7 | */ 8 | /* global jQuery */ 9 | jQuery(function( $ ) { 10 | var $addRunBtn, 11 | $runsContainer = $( "#runs-container" ), 12 | $runFieldsetClean = $runsContainer.children( "fieldset" ).eq( 0 ).clone().detach(), 13 | cnt = $runsContainer.children( "fieldset" ).length; 14 | 15 | $addRunBtn = $( "