/** * Draw the waterfall image * * @param TestStepResult $testStepResult Step results to draw the waterfall for * @param resource $img */ function tbnDrawWaterfall($testStepResult, &$img) { global $id; global $testPath; global $run; global $cached; global $url; global $newWidth; global $test; global $step; require_once __DIR__ . '/waterfall.inc'; $requests = $testStepResult->getRequests(); $localPaths = $testStepResult->createTestPaths(); AddRequestScriptTimings($requests, $localPaths->devtoolsScriptTimingFile()); $use_dots = !isset($_REQUEST['dots']) || $_REQUEST['dots'] != 0; $rows = GetRequestRows($requests, $use_dots); $page_events = GetPageEvents($testStepResult->getRawResults()); $bwIn = 0; if (isset($test) && array_key_exists('testinfo', $test) && array_key_exists('bwIn', $test['testinfo'])) { $bwIn = $test['testinfo']['bwIn']; } else { if (isset($test) && array_key_exists('test', $test) && array_key_exists('bwIn', $test['test'])) { $bwIn = $test['test']['bwIn']; } } $options = array('id' => $id, 'path' => $testPath, 'run_id' => $run, 'is_cached' => $cached, 'step_id' => $step, 'use_cpu' => true, 'use_bw' => true, 'max_bw' => $bwIn, 'show_user_timing' => GetSetting('waterfall_show_user_timing'), 'is_thumbnail' => true, 'include_js' => true, 'is_mime' => (bool) GetSetting('mime_waterfalls'), 'width' => $newWidth); $url = $testStepResult->readableIdentifier($url); $pageData = $testStepResult->getRawResults(); $img = GetWaterfallImage($rows, $url, $page_events, $options, $pageData); }
/** * @param TestStepResult $stepResult * @return string Markup with links */ private function _getNetlogLinks($stepResult) { $localPaths = $stepResult->createTestPaths(); if (!gz_is_file($localPaths->netlogFile())) { return ""; } $urlGenerator = $stepResult->createUrlGenerator("", FRIENDLY_URLS); $zipUrl = $urlGenerator->getGZip($stepResult->createTestPaths("")->netlogFile()); return "<br><br><a href=\"{$zipUrl}\" title=\"Download Network Log\">Net Log</a>"; }
/** * @param FileHandler $fileHandler FileHandler to use * @param TestInfo $testInfo Information about the test * @param TestStepResult $testStepResult Results of the specific test * @param bool $useQuicklinks True if quicklinks are used, false otherwise */ function printStep($fileHandler, $testInfo, $testStepResult, $useQuicklinks) { $pageRunData = $testStepResult->getRawResults(); $localPaths = $testStepResult->createTestPaths(); $urlPaths = $testStepResult->createTestPaths(substr($testInfo->getRootDirectory(), 1)); $urlGenerator = $testStepResult->createUrlGenerator("", FRIENDLY_URLS); echo "<a name=\"step_" . $testStepResult->getStepNumber() . "\">"; echo "<h1 class='stepName'>" . $testStepResult->readableIdentifier() . "</h1>"; echo "</a>"; if ($fileHandler->dirExists($localPaths->videoDir())) { echo "<a href=\"" . $urlGenerator->createVideo() . "\">Create Video</a> • "; echo "<a href=\"" . $urlGenerator->downloadVideoFrames() . "\">Download Video Frames</a>"; if ($useQuicklinks) { echo " • "; } } if ($useQuicklinks) { echo '<a href="#quicklinks">Back to Quicklinks</a>'; } $screenShotUrl = null; if ($fileHandler->fileExists($localPaths->screenShotPngFile())) { $screenShotUrl = $urlPaths->screenShotPngFile(); } else { if ($fileHandler->fileExists($localPaths->screenShotFile())) { $screenShotUrl = $urlPaths->screenShotFile(); } } if ($screenShotUrl) { echo '<h2>Fully Loaded</h2>'; echo '<a href="' . $screenShotUrl . '">'; echo '<img class="center" alt="Screen Shot" style="max-width:930px; -ms-interpolation-mode: bicubic;" src="' . $screenShotUrl . '">'; echo '</a>'; } // display the last status message if we have one $messages = $testStepResult->getStatusMessages(); if (count($messages)) { $lastMessage = end($messages); if (strlen($lastMessage['message'])) { echo "\n<br>Last Status Message: \"{$lastMessage['message']}\"\n"; } } $stepNumber = $testStepResult->getStepNumber(); $linkSuffix = $stepNumber > 1 ? "_" . $stepNumber : ""; if ($fileHandler->fileExists($localPaths->additionalScreenShotFile("render"))) { echo '<br><br><a name="start_render' . $linkSuffix . '"><h2>Start Render'; if (isset($pageRunData) && isset($pageRunData['render'])) { echo ' (' . number_format($pageRunData['render'] / 1000.0, 3) . ' sec)'; } echo '</h2></a>'; echo '<img class="center" alt="Start Render Screen Shot" src="' . $urlPaths->additionalScreenShotFile("render") . '">'; } if ($fileHandler->fileExists($localPaths->additionalScreenShotFile("dom"))) { echo '<br><br><a name="dom_element' . $linkSuffix . '"><h2>DOM Element'; if (isset($pageRunData) && isset($pageRunData['domTime'])) { echo ' (' . number_format($pageRunData['domTime'] / 1000.0, 3) . ' sec)'; } echo '</h2></a>'; echo '<img class="center" alt="DOM Element Screen Shot" src="' . $urlPaths->additionalScreenShotFile("dom") . '">'; } if ($fileHandler->fileExists($localPaths->additionalScreenShotFile("doc"))) { echo '<br><br><a name="doc_complete' . $linkSuffix . '"><h2>Document Complete'; if (isset($pageRunData) && isset($pageRunData['docTime'])) { echo ' (' . number_format($pageRunData['docTime'] / 1000.0, 3) . ' sec)'; } echo '</h2></a>'; echo '<img class="center" alt="Document Complete Screen Shot" src="' . $urlPaths->additionalScreenShotFile("doc") . '">'; } if ($fileHandler->fileExists($localPaths->aftDiagnosticImageFile())) { echo '<br><br><a name="aft' . $linkSuffix . '"><h2>AFT Details'; if (isset($pageRunData) && isset($pageRunData['aft'])) { echo ' (' . number_format($pageRunData['aft'] / 1000.0, 3) . ' sec)'; } echo '</h2></a>'; echo 'White = Stabilized Early, Blue = Dynamic, Red = Late Static (failed AFT), Green = AFT<br>'; echo '<img class="center" alt="AFT Diagnostic image" src="' . $urlPaths->aftDiagnosticImageFile() . '">'; } if ($fileHandler->fileExists($localPaths->additionalScreenShotFile("responsive"))) { echo '<br><br><h2 id="responsive">Responsive Site Check</h2>'; echo '<img class="center" alt="Responsive Site Check image" src="' . $urlPaths->additionalScreenShotFile("responsive") . '">'; } // display all of the status messages if (count($messages)) { echo "\n<br><br><a name=\"status_messages" . $linkSuffix . "\"><h2>Status Messages</h2></a>\n"; echo "<table id=\"messages\" class=\"translucent\"><tr><th>Time</th><th>Message</th></tr>\n"; foreach ($messages as $message) { $time = $message['time'] / 1000.0; if ($time > 0.0) { echo "<tr><td class=\"time\">{$time} sec.</td><td>{$message['message']}</td></tr>"; } } echo "</table>\n"; } $row = 0; $console_log = $testStepResult->getConsoleLog(); if (isset($console_log) && count($console_log)) { echo "\n<br><br><a name=\"console-log" . $linkSuffix . "\"><h2>Console Log</h2></a>\n"; echo "<table id=\"console-log\" class=\"translucent\"><tr><th>Source</th><th>Level</th><th>Message</th><th>URL</th><th>Line</th></tr>\n"; foreach ($console_log as &$log_entry) { $row++; $rowClass = ''; if ($row % 2 == 0) { $rowClass = ' class="even"'; } echo "<tr{$rowClass}><td class=\"source\">" . htmlspecialchars($log_entry['source']) . "</td><td class=\"level\">" . htmlspecialchars($log_entry['level']) . "</td><td class=\"message\"><div>" . htmlspecialchars($log_entry['text']) . "</div></td><td class=\"url\"><div><a href=\"" . htmlspecialchars($log_entry['url']) . "\">" . htmlspecialchars($log_entry['url']) . "</a></div></td><td class=\"line\">" . htmlspecialchars($log_entry['line']) . "</td></tr>\n"; } echo "</table>\n"; } }