From 8c927916d49e7aff4a136cd79c2502ff56e2eb26 Mon Sep 17 00:00:00 2001 From: Robert Nemes Date: Thu, 20 Jun 2024 15:44:47 +0100 Subject: [PATCH 1/7] Added setup/teardown times to Nav --- testplan/web_ui/testing/src/Common/Styles.js | 71 +++++++ testplan/web_ui/testing/src/Common/utils.js | 18 ++ .../testing/src/Nav/InteractiveNavEntry.js | 181 ++++++------------ testplan/web_ui/testing/src/Nav/NavEntry.js | 90 +++------ testplan/web_ui/testing/src/Nav/NavList.js | 6 +- testplan/web_ui/testing/src/Nav/TreeView.js | 6 +- testplan/web_ui/testing/src/Nav/navUtils.js | 53 ++++- 7 files changed, 237 insertions(+), 188 deletions(-) diff --git a/testplan/web_ui/testing/src/Common/Styles.js b/testplan/web_ui/testing/src/Common/Styles.js index 6d30e6a76..12b581a7a 100644 --- a/testplan/web_ui/testing/src/Common/Styles.js +++ b/testplan/web_ui/testing/src/Common/Styles.js @@ -33,6 +33,77 @@ export const statusStyles = { }, }; +export const navStyles = StyleSheet.create({ + entryName: { + overflow: "hidden", + "text-overflow": "ellipsis", + "white-space": "nowrap", + fontSize: "small", + fontWeight: 500, + marginLeft: "3px", + flex: "auto", + marginRight: "3px", + userSelect: "text", + }, + entryIcons: { + display: "flex", + flexShrink: 0, + "align-items": "center", + marginLeft: "auto", + }, + entryIcon: { + fontSize: "x-small", + margin: "0em 0.5em 0em 0.5em", + }, + entryButton: { + textDecoration: "none", + position: "relative", + display: "inline-block", + height: "2.4em", + width: "2.4em", + cursor: "pointer", + color: "black", + padding: "0.7em 0em 0.7em 0em", + transition: "all 0.3s ease-out 0s", + }, + inactiveEntryButton: { + textDecoration: "none", + position: "relative", + display: "inline-block", + height: "2.4em", + width: "2.4em", + cursor: "pointer", + color: BLACK, + padding: "0.7em 0em 0.7em 0em", + transition: "all 0.3s ease-out 0s !important", + }, + environmentToggle: { + padding: "0.65em 0em 0.65em 0em", + }, + busyEnvironmentToggle: { + color: "orange", + }, + badge: { + opacity: 0.5, + }, + passedBadge: { + backgroundColor: GREEN, + }, + failedBadge: { + backgroundColor: RED, + }, + errorBadge: { + backgroundColor: RED, + }, + unstableBadge: { + backgroundColor: ORANGE, + }, + unknownBadge: { + backgroundColor: BLACK, + }, + ...statusStyles, +}); + export default StyleSheet.create({ unselectable: unselectable, }); diff --git a/testplan/web_ui/testing/src/Common/utils.js b/testplan/web_ui/testing/src/Common/utils.js index a6381dbc9..bb526df79 100644 --- a/testplan/web_ui/testing/src/Common/utils.js +++ b/testplan/web_ui/testing/src/Common/utils.js @@ -27,6 +27,21 @@ function calcExecutionTime(entry) { return elapsed; } +/** + * Calculate elapsed time of a timer field + */ +function calcElapsedTime(timerField) { + let elapsed = null; + if (timerField && Array.isArray(timerField) && !_.isEmpty(timerField)) { + elapsed = 0; + timerField.forEach((interval) => { + elapsed += + timeToTimestamp(interval.end) - timeToTimestamp(interval.start); + }); + } + return elapsed; +} + /** * Convert string to timestamp. * @@ -153,6 +168,8 @@ function formatSeconds(durationInSeconds) { * @returns {string} */ function formatMilliseconds(durationInMilliseconds) { + if (!_.isNumber(durationInMilliseconds)) { return "na"; }; + let secondsInMilliseconds = durationInMilliseconds % 60000; let seconds = secondsInMilliseconds / 1000; let minutesInMilliseconds = (durationInMilliseconds - secondsInMilliseconds) @@ -176,6 +193,7 @@ function formatMilliseconds(durationInMilliseconds) { export { calcExecutionTime, + calcElapsedTime, timeToTimestamp, getNavEntryDisplayData, any, diff --git a/testplan/web_ui/testing/src/Nav/InteractiveNavEntry.js b/testplan/web_ui/testing/src/Nav/InteractiveNavEntry.js index 764991720..e9a5dcf54 100644 --- a/testplan/web_ui/testing/src/Nav/InteractiveNavEntry.js +++ b/testplan/web_ui/testing/src/Nav/InteractiveNavEntry.js @@ -1,7 +1,7 @@ import React, { useState, useEffect } from "react"; import PropTypes from "prop-types"; import { Badge } from "reactstrap"; -import { StyleSheet, css } from "aphrodite"; +import { css } from "aphrodite"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faPlay, @@ -12,13 +12,8 @@ import { faFastBackward, } from "@fortawesome/free-solid-svg-icons"; import { useAtom } from "jotai"; -import _ from "lodash"; import { - RED, - GREEN, - ORANGE, - BLACK, CATEGORY_ICONS, ENTRY_TYPES, STATUS, @@ -27,10 +22,9 @@ import { ENV_STATUSES, NAV_ENTRY_ACTIONS, } from "../Common/defaults"; -import { formatMilliseconds } from "./../Common/utils"; -import { - pendingEnvRequestAtom, -} from "../Report/InteractiveReport"; +import { navStyles } from "../Common/Styles"; +import { generateNavTimeInfo } from "./navUtils"; +import { pendingEnvRequestAtom } from "../Report/InteractiveReport"; /** * Display interactive NavEntry information: @@ -66,13 +60,12 @@ const InteractiveNavEntry = (props) => { props.handleClick, props.type ); - const executionTime = - props.displayTime && _.isNumber(props.executionTime) ? ( - - - {formatMilliseconds(props.executionTime)} - - + + const navTimeInfo = + props.displayTime ? generateNavTimeInfo( + props.setupTime, + props.teardownTime, + props.executionTime, ) : null; return ( @@ -84,23 +77,32 @@ const InteractiveNavEntry = (props) => { }} > {CATEGORY_ICONS[props.type]}
{props.name}
-
- {executionTime} - - {props.caseCountPassed}/ - {props.caseCountFailed} +
+ + {navTimeInfo} + + + {props.caseCountPassed} + / + {props.caseCountFailed} {resetReportIcon} {envStatusIcon} @@ -144,7 +146,9 @@ const getStatusIcon = ( return ( { return ( { const badgeStyle = `${STATUS_CATEGORY[props.status]}Badge`; - const executionTime = - props.displayTime && _.isNumber(props.executionTime) ? ( - - - {formatMilliseconds(props.executionTime)} - - + const navTimeInfo = + props.displayTime ? generateNavTimeInfo( + props.setupTime, + props.teardownTime, + props.executionTime, ) : null; + return (
{ }} > {CATEGORY_ICONS[props.type]}
{props.name}
-
- {executionTime} - - {props.caseCountPassed}/ - {props.caseCountFailed} +
+ + {navTimeInfo} + + + {props.caseCountPassed} + / + {props.caseCountFailed}
@@ -84,46 +89,5 @@ NavEntry.propTypes = { displayTime: PropTypes.bool, }; -const styles = StyleSheet.create({ - entryName: { - overflow: "hidden", - "text-overflow": "ellipsis", - "white-space": "nowrap", - fontSize: "small", - fontWeight: 500, - marginLeft: "3px", - marginRight: "3px", - userSelect: "text", - }, - entryIcons: { - paddingLeft: "1em", - display: "flex", - flexShrink: 0, - marginLeft: "auto", - }, - entryIcon: { - fontSize: "x-small", - margin: "0em 0.5em 0em 0.5em", - }, - badge: { - opacity: 0.5, - }, - passedBadge: { - backgroundColor: GREEN, - }, - failedBadge: { - backgroundColor: RED, - }, - errorBadge: { - backgroundColor: RED, - }, - unstableBadge: { - backgroundColor: ORANGE, - }, - unknownBadge: { - backgroundColor: BLACK, - }, - ...statusStyles, -}); export default NavEntry; diff --git a/testplan/web_ui/testing/src/Nav/NavList.js b/testplan/web_ui/testing/src/Nav/NavList.js index c4ec24b27..4486e5ac8 100644 --- a/testplan/web_ui/testing/src/Nav/NavList.js +++ b/testplan/web_ui/testing/src/Nav/NavList.js @@ -6,7 +6,7 @@ import InteractiveNavEntry from "./InteractiveNavEntry"; import NavEntry from "./NavEntry"; import { CreateNavButtons, GetNavColumn } from "./navUtils.js"; import { STATUS, RUNTIME_STATUS, NAV_ENTRY_ACTIONS, CATEGORIES } from "../Common/defaults"; -import { calcExecutionTime } from "./../Common/utils"; +import { calcExecutionTime, calcElapsedTime } from "./../Common/utils"; /** * Render a vertical list of all the currently selected entries children. @@ -34,6 +34,8 @@ const NavList = (props) => { suiteRelated={entry.category === CATEGORIES.synthesized} action={entry.action} executionTime={calcExecutionTime(entry)} + setupTime={calcElapsedTime(entry?.timer?.setup)} + teardownTime={calcElapsedTime(entry?.timer?.teardown)} displayTime={props.displayTime} /> ), @@ -50,6 +52,8 @@ const NavList = (props) => { caseCountPassed={entry.counter.passed} caseCountFailed={entry.counter.failed + (entry.counter.error || 0)} executionTime={calcExecutionTime(entry)} + setupTime={calcElapsedTime(entry?.timer?.setup)} + teardownTime={calcElapsedTime(entry?.timer?.teardown)} displayTime={props.displayTime} /> ); diff --git a/testplan/web_ui/testing/src/Nav/TreeView.js b/testplan/web_ui/testing/src/Nav/TreeView.js index 28265df88..34f1ab821 100644 --- a/testplan/web_ui/testing/src/Nav/TreeView.js +++ b/testplan/web_ui/testing/src/Nav/TreeView.js @@ -22,7 +22,7 @@ import { generatePath } from "react-router"; import { NavLink } from "react-router-dom"; import TagList from "./TagList"; import { makeStyles } from "@material-ui/core/styles"; -import { generateURLWithParameters, calcExecutionTime } from "../Common/utils"; +import { generateURLWithParameters, calcExecutionTime, calcElapsedTime } from "../Common/utils"; import { isReportLeaf } from "../Report/reportUtils"; const SelectionContext = React.createContext(null); @@ -339,6 +339,8 @@ const createNavEntry = (props, entry) => { suiteRelated={entry.category === CATEGORIES.synthesized} action={entry.action} executionTime={calcExecutionTime(entry)} + setupTime={calcElapsedTime(entry?.timer?.setup)} + teardownTime={calcElapsedTime(entry?.timer?.teardown)} displayTime={props.displayTime} /> ); @@ -352,6 +354,8 @@ const createNavEntry = (props, entry) => { caseCountPassed={entry.counter.passed} caseCountFailed={entry.counter.failed + (entry.counter.error || 0)} executionTime={calcExecutionTime(entry)} + setupTime={calcElapsedTime(entry?.timer?.setup)} + teardownTime={calcElapsedTime(entry?.timer?.teardown)} displayTime={props.displayTime} /> ); diff --git a/testplan/web_ui/testing/src/Nav/navUtils.js b/testplan/web_ui/testing/src/Nav/navUtils.js index 3f2e23a50..5183760ff 100644 --- a/testplan/web_ui/testing/src/Nav/navUtils.js +++ b/testplan/web_ui/testing/src/Nav/navUtils.js @@ -4,14 +4,16 @@ import React from "react"; import { ListGroup, ListGroupItem } from "reactstrap"; import { StyleSheet, css } from "aphrodite"; +import _ from "lodash"; import TagList from "./TagList"; import Column from "./Column"; import { LIGHT_GREY, MEDIUM_GREY } from "../Common/defaults"; import CommonStyles from "../Common/Styles.js"; +import { statusStyles } from "../Common/Styles"; import { NavLink } from "react-router-dom"; import { generatePath } from "react-router"; -import { generateURLWithParameters } from "../Common/utils"; +import { formatMilliseconds, generateURLWithParameters } from "../Common/utils"; import { isReportLeaf } from "../Report/reportUtils"; /** @@ -140,6 +142,10 @@ const applyNamedFilter = (entries, filter) => { }; export const styles = StyleSheet.create({ + entryIcon: { + fontSize: "x-small", + margin: "0em 0.5em 0em 0.5em", + }, navButton: { position: "relative", display: "block", @@ -160,6 +166,7 @@ export const styles = StyleSheet.create({ "overflow-y": "auto", height: "100%", }, + ...statusStyles, }); /** @@ -317,8 +324,52 @@ const GetNavColumn = (props, navButtons) => ( ); +const generateNavTimeInfo = ( + setupTimeProp, + teardownTimeProp, + executionTimeProp, +) => { + let totalTime = null; + if (_.isNumber(executionTimeProp)) { + totalTime = executionTimeProp; + totalTime += _.isNumber(setupTimeProp) ? setupTimeProp : 0; + totalTime += _.isNumber(teardownTimeProp) ? teardownTimeProp : 0; + }; + + const detailedTimeElement = + (_.isNumber(setupTimeProp) || _.isNumber(teardownTimeProp)) + ? ( + + ( + { + formatMilliseconds(setupTimeProp) + } / { + formatMilliseconds(executionTimeProp) + } / { + formatMilliseconds(teardownTimeProp) + } + ) + + ) + : null; + const totalTimeElement = + _.isNumber(totalTime) + ? ( + + {formatMilliseconds(totalTime)} + + ) + : null; + + return [ + detailedTimeElement, + totalTimeElement + ]; +}; + export { CreateNavButtons, + generateNavTimeInfo, GetSelectedUid, GetNavEntries, GetInteractiveNavEntries, From f27bd326b3b62a98b30d94f47a237bfaba023ebb Mon Sep 17 00:00:00 2001 From: Robert Nemes Date: Thu, 20 Jun 2024 15:49:16 +0100 Subject: [PATCH 2/7] Updated test snapshots --- .../InteractiveNavEntry.test.js.snap | 121 +++++++++++------- .../InteractiveNavList.test.js.snap | 2 + .../__snapshots__/NavEntry.test.js.snap | 21 ++- .../__snapshots__/NavList.test.js.snap | 2 + 4 files changed, 96 insertions(+), 50 deletions(-) diff --git a/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap index ebf750e4b..a39d2c41a 100644 --- a/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap +++ b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap @@ -11,7 +11,7 @@ exports[`InteractiveNavEntry renders a testcase in "failed" state 1`] = ` } >
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+
FakeTestcase
+ diff --git a/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/NavEntry.test.js.snap b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/NavEntry.test.js.snap index 31dd71579..aebad3a82 100644 --- a/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/NavEntry.test.js.snap +++ b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/NavEntry.test.js.snap @@ -20,14 +20,17 @@ exports[`NavEntry shallow renders the correct HTML structure 1`] = ` TP
entry name
+
entry name
+
entry name
+ From 13eccbd1f03b265846b0a16750f7caa8389abf61 Mon Sep 17 00:00:00 2001 From: Robert Nemes Date: Mon, 24 Jun 2024 15:14:21 +0100 Subject: [PATCH 3/7] Updated main fakeReport and sampleReports with setup and teardown data --- .../web_ui/testing/src/Common/fakeReport.js | 86 ++++++++++--- .../testing/src/Common/sampleReports.js | 113 ++++++++++++++---- 2 files changed, 159 insertions(+), 40 deletions(-) diff --git a/testplan/web_ui/testing/src/Common/fakeReport.js b/testplan/web_ui/testing/src/Common/fakeReport.js index b7b8848e6..87b9dbe79 100644 --- a/testplan/web_ui/testing/src/Common/fakeReport.js +++ b/testplan/web_ui/testing/src/Common/fakeReport.js @@ -35,10 +35,18 @@ const TESTPLAN_REPORT = { simple: ["server"], }, timer: { - run: { - start: "2018-10-15T14:30:11.009705+00:00", - end: "2018-10-15T14:30:11.159661+00:00", - }, + run: [ + { + start: "2018-10-15T14:30:11.009705+00:00", + end: "2018-10-15T14:30:11.159661+00:00", + }, + ], + setup: [ + { + start: "2018-10-15T14:30:10.079745+00:00", + end: "2018-10-15T14:30:11.008995+00:00", + }, + ], }, entries: [ { @@ -200,10 +208,24 @@ const TESTPLAN_REPORT = { type: "TestGroupReport", logs: [], timer: { - run: { - start: "2018-10-15T14:30:12.009705+00:00", - end: "2018-10-15T14:30:12.159661+00:00", - }, + run: [ + { + start: "2018-10-15T14:30:12.009705+00:00", + end: "2018-10-15T14:30:12.159661+00:00", + }, + ], + setup: [ + { + start: "2018-10-15T14:30:11.879705+00:00", + end: "2018-10-15T14:30:12.008705+00:00", + }, + ], + teardown: [ + { + start: "2018-10-15T14:30:12.160132+00:00", + end: "2018-10-15T14:30:12.645329+00:00", + }, + ], }, entries: [ { @@ -319,10 +341,26 @@ var fakeReportAssertionsError = { status: "error", parent_uids: ["Assertions Example"], timer: { - run: { - end: "2020-01-10T05:06:59.141338+00:00", - start: "2020-01-10T03:04:58.629871+00:00", - }, + run: [ + { + end: "2020-01-10T05:06:59.141338+00:00", + start: "2020-01-10T03:04:58.629871+00:00", + }, + ], + setup: + [ + { + end: "2020-01-10T05:06:59.141338+00:00", + start: "2020-01-10T05:06:59.121338+00:00", + }, + ], + teardown: + [ + { + end: "2020-01-10T05:06:59.191338+00:00", + start: "2020-01-10T05:06:59.141338+00:00", + }, + ], }, hash: 3697482064019099674, status_override: "error", @@ -720,10 +758,26 @@ var fakeReportAssertions = { status: "failed", parent_uids: ["Assertions Example"], timer: { - run: { - end: "2020-01-10T05:06:59.141338+00:00", - start: "2020-01-10T03:04:58.629871+00:00", - }, + run: [ + { + end: "2020-01-10T05:06:59.141338+00:00", + start: "2020-01-10T03:04:58.629871+00:00", + }, + ], + setup: + [ + { + end: "2020-01-10T05:06:59.141338+00:00", + start: "2020-01-10T05:06:59.121338+00:00", + }, + ], + teardown: + [ + { + end: "2020-01-10T05:06:59.191338+00:00", + start: "2020-01-10T05:06:59.141338+00:00", + }, + ], }, hash: 3697482064019099674, status_override: null, diff --git a/testplan/web_ui/testing/src/Common/sampleReports.js b/testplan/web_ui/testing/src/Common/sampleReports.js index 309d73bff..676f63f54 100644 --- a/testplan/web_ui/testing/src/Common/sampleReports.js +++ b/testplan/web_ui/testing/src/Common/sampleReports.js @@ -29,10 +29,18 @@ const TESTPLAN_REPORT = { simple: ["server"], }, timer: { - run: { - start: "2018-10-15T14:30:11.009705+00:00", - end: "2018-10-15T14:30:11.159661+00:00", - }, + run: [ + { + start: "2018-10-15T14:30:11.009705+00:00", + end: "2018-10-15T14:30:11.159661+00:00", + }, + ], + setup: [ + { + start: "2018-10-15T14:30:10.079745+00:00", + end: "2018-10-15T14:30:11.008995+00:00", + }, + ], }, entries: [ { @@ -188,10 +196,24 @@ const TESTPLAN_REPORT = { type: "TestGroupReport", logs: [], timer: { - run: { - start: "2018-10-15T14:30:12.009705+00:00", - end: "2018-10-15T14:30:12.159661+00:00", - }, + run: [ + { + start: "2018-10-15T14:30:12.009705+00:00", + end: "2018-10-15T14:30:12.159661+00:00", + }, + ], + setup: [ + { + start: "2018-10-15T14:30:11.879705+00:00", + end: "2018-10-15T14:30:12.008705+00:00", + }, + ], + teardown: [ + { + start: "2018-10-15T14:30:12.160132+00:00", + end: "2018-10-15T14:30:12.645329+00:00", + }, + ], }, entries: [ { @@ -318,10 +340,24 @@ const SIMPLE_PASSED_REPORT = { simple: ["server"], }, timer: { - run: { - start: "2018-10-15T14:30:11.009705+00:00", - end: "2018-10-15T14:30:11.159661+00:00", - }, + run: [ + { + start: "2018-10-15T14:30:11.009705+00:00", + end: "2018-10-15T14:30:11.159661+00:00", + }, + ], + setup: [ + { + start: "2018-10-15T14:30:11.879705+00:00", + end: "2018-10-15T14:30:12.008705+00:00", + }, + ], + teardown: [ + { + start: "2018-10-15T14:30:12.160132+00:00", + end: "2018-10-15T14:30:12.645329+00:00", + }, + ], }, entries: [ { @@ -436,10 +472,18 @@ const SIMPLE_FAILED_REPORT = { simple: ["server"], }, timer: { - run: { - start: "2018-10-15T14:30:11.009705+00:00", - end: "2018-10-15T14:30:11.159661+00:00", - }, + run: [ + { + start: "2018-10-15T14:30:11.009705+00:00", + end: "2018-10-15T14:30:11.159661+00:00", + }, + ], + setup: [ + { + start: "2018-10-15T14:30:10.079745+00:00", + end: "2018-10-15T14:30:11.008995+00:00", + }, + ], }, entries: [ { @@ -539,6 +583,10 @@ const SIMPLE_ERROR_REPORT = { start: "2018-10-15T14:30:10.998071+00:00", end: "2018-10-15T14:30:11.296158+00:00", }, + setup: { + start: "2018-10-15T14:30:10.925461+00:00", + end: "2018-10-15T14:30:10.997971+00:00", + }, }, entries: [], logs: [ @@ -584,10 +632,18 @@ const ERROR_REPORT = { simple: ["server"], }, timer: { - run: { - start: "2018-10-15T14:30:11.009705+00:00", - end: "2018-10-15T14:30:11.159661+00:00", - }, + run: [ + { + start: "2018-10-15T14:30:11.009705+00:00", + end: "2018-10-15T14:30:11.159661+00:00", + }, + ], + setup: [ + { + start: "2018-10-15T14:30:11.879705+00:00", + end: "2018-10-15T14:30:12.008705+00:00", + }, + ], }, entries: [ { @@ -711,10 +767,19 @@ const ERROR_REPORT = { type: "TestGroupReport", logs: [], timer: { - run: { - start: "2018-10-15T14:30:12.009705+00:00", - end: "2018-10-15T14:30:12.159661+00:00", - }, + run: [ + { + start: "2018-10-15T14:30:12.009705+00:00", + end: "2018-10-15T14:30:12.159661+00:00", + }, + ], + setup: [ + { + start: "2018-10-15T14:30:11.879705+00:00", + end: "2018-10-15T14:30:12.008705+00:00", + }, + ], + }, entries: [ { From a3058d90da4529af4ed6c20d25bbd4d24c1e83c8 Mon Sep 17 00:00:00 2001 From: Robert Nemes Date: Mon, 24 Jun 2024 15:39:44 +0100 Subject: [PATCH 4/7] Updated test snapshots --- .../__tests__/__snapshots__/Nav.test.js.snap | 114 +- .../__snapshots__/BatchReport.test.js.snap | 1656 +++++++++++++---- 2 files changed, 1388 insertions(+), 382 deletions(-) diff --git a/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/Nav.test.js.snap b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/Nav.test.js.snap index a6721d7f8..ea8adb2eb 100644 --- a/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/Nav.test.js.snap +++ b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/Nav.test.js.snap @@ -167,10 +167,18 @@ exports[`Nav with List shallow renders and matches snapshot 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -276,10 +284,24 @@ exports[`Nav with List shallow renders and matches snapshot 1`] = ` "status_override": null, "tags": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -458,10 +480,18 @@ exports[`Nav with TreeView shallow renders and matches snapshot 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -567,10 +597,24 @@ exports[`Nav with TreeView shallow renders and matches snapshot 1`] = ` "status_override": null, "tags": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -744,10 +788,18 @@ exports[`Nav with TreeView shallow renders and matches snapshot 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -853,10 +905,24 @@ exports[`Nav with TreeView shallow renders and matches snapshot 1`] = ` "status_override": null, "tags": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", diff --git a/testplan/web_ui/testing/src/Report/__tests__/__snapshots__/BatchReport.test.js.snap b/testplan/web_ui/testing/src/Report/__tests__/__snapshots__/BatchReport.test.js.snap index abd389245..3890f0ad1 100644 --- a/testplan/web_ui/testing/src/Report/__tests__/__snapshots__/BatchReport.test.js.snap +++ b/testplan/web_ui/testing/src/Report/__tests__/__snapshots__/BatchReport.test.js.snap @@ -237,10 +237,18 @@ exports[`BatchReport loads a failed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -515,10 +523,18 @@ exports[`BatchReport loads a failed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -780,10 +796,18 @@ exports[`BatchReport loads a failed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -1385,10 +1409,18 @@ exports[`BatchReport loads a failed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -1656,10 +1688,18 @@ exports[`BatchReport loads a failed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -1921,10 +1961,18 @@ exports[`BatchReport loads a failed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -2664,10 +2712,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -2732,10 +2788,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -3019,10 +3083,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -3087,10 +3159,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -3189,10 +3269,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -3492,10 +3580,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -3560,10 +3656,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -3840,10 +3944,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -3908,10 +4020,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -4010,10 +4130,18 @@ exports[`BatchReport loads a more complex error report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -4405,10 +4533,18 @@ exports[`BatchReport loads a more complex report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -4550,10 +4686,24 @@ exports[`BatchReport loads a more complex report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -4894,10 +5044,18 @@ exports[`BatchReport loads a more complex report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -5039,10 +5197,24 @@ exports[`BatchReport loads a more complex report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -5370,10 +5542,18 @@ exports[`BatchReport loads a more complex report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -5900,16 +6080,24 @@ exports[`BatchReport loads a more complex report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, - }, - "type": "TestGroupReport", - "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", - "uids": Array [ - "520a92e4-325e-4077-93e6-55d7091a3f83", - "21739167-b30f-4c13-a315-ef6ae52fd1f7", + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], + }, + "type": "TestGroupReport", + "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", + "uids": Array [ + "520a92e4-325e-4077-93e6-55d7091a3f83", + "21739167-b30f-4c13-a315-ef6ae52fd1f7", ], }, Object { @@ -6045,10 +6233,24 @@ exports[`BatchReport loads a more complex report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -6382,10 +6584,18 @@ exports[`BatchReport loads a more complex report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -6527,10 +6737,24 @@ exports[`BatchReport loads a more complex report 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -6858,10 +7082,18 @@ exports[`BatchReport loads a more complex report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -7366,10 +7598,24 @@ exports[`BatchReport loads a passed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -7642,10 +7888,24 @@ exports[`BatchReport loads a passed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -7929,10 +8189,24 @@ exports[`BatchReport loads a passed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -8198,10 +8472,24 @@ exports[`BatchReport loads a passed simple report 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -8565,10 +8853,18 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -8710,10 +9006,24 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -9054,10 +9364,18 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -9199,10 +9517,24 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -9530,10 +9862,18 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -9850,10 +10190,18 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -9995,10 +10343,24 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -10332,10 +10694,18 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -10477,10 +10847,24 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -10808,10 +11192,18 @@ exports[`BatchReport loads a report with selection at Multitest level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -11145,10 +11537,18 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -11294,10 +11694,24 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -11638,10 +12052,18 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -11787,10 +12209,24 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -11971,10 +12407,24 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -12498,10 +12948,18 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -12647,10 +13105,24 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -12984,10 +13456,18 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -13133,10 +13613,24 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -13317,10 +13811,24 @@ exports[`BatchReport loads a report with selection at Testcase level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -13927,10 +14435,18 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -14092,10 +14608,24 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -14436,10 +14966,18 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -14601,10 +15139,24 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -14801,10 +15353,24 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -15360,10 +15926,18 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -15525,10 +16099,24 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -15862,10 +16450,18 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -16027,10 +16623,24 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -16227,10 +16837,24 @@ exports[`BatchReport loads a report with selection at Testcase level and Time In "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -16885,10 +17509,18 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -17050,10 +17682,24 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -17394,10 +18040,18 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -17559,10 +18213,24 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -17759,10 +18427,24 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -18318,10 +19000,18 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -18483,10 +19173,24 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -18820,10 +19524,18 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -18985,10 +19697,24 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -19185,10 +19911,24 @@ exports[`BatchReport loads a report with selection at Testcase level and UTC Tim "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -19843,10 +20583,18 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -19988,10 +20736,24 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -20332,10 +21094,18 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -20477,10 +21247,24 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -20808,10 +21592,18 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -21284,10 +22076,18 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -21429,10 +22229,24 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -21766,10 +22580,18 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -21911,10 +22733,24 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -22242,10 +23078,18 @@ exports[`BatchReport loads a report with selection at Testsuite level 1`] = ` ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -22734,10 +23578,18 @@ exports[`BatchReport shallow renders the correct HTML structure when report load ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -22879,10 +23731,24 @@ exports[`BatchReport shallow renders the correct HTML structure when report load "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -23222,10 +24088,18 @@ exports[`BatchReport shallow renders the correct HTML structure when report load ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -23367,10 +24241,24 @@ exports[`BatchReport shallow renders the correct HTML structure when report load "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -23721,10 +24609,18 @@ exports[`BatchReport shallow renders the correct HTML structure when report load ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -23866,10 +24762,24 @@ exports[`BatchReport shallow renders the correct HTML structure when report load "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -24202,10 +25112,18 @@ exports[`BatchReport shallow renders the correct HTML structure when report load ], }, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:11.159661+00:00", - "start": "2018-10-15T14:30:11.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:11.159661+00:00", + "start": "2018-10-15T14:30:11.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:11.008995+00:00", + "start": "2018-10-15T14:30:10.079745+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "21739167-b30f-4c13-a315-ef6ae52fd1f7", @@ -24347,10 +25265,24 @@ exports[`BatchReport shallow renders the correct HTML structure when report load "tags": Object {}, "tags_index": Object {}, "timer": Object { - "run": Object { - "end": "2018-10-15T14:30:12.159661+00:00", - "start": "2018-10-15T14:30:12.009705+00:00", - }, + "run": Array [ + Object { + "end": "2018-10-15T14:30:12.159661+00:00", + "start": "2018-10-15T14:30:12.009705+00:00", + }, + ], + "setup": Array [ + Object { + "end": "2018-10-15T14:30:12.008705+00:00", + "start": "2018-10-15T14:30:11.879705+00:00", + }, + ], + "teardown": Array [ + Object { + "end": "2018-10-15T14:30:12.645329+00:00", + "start": "2018-10-15T14:30:12.160132+00:00", + }, + ], }, "type": "TestGroupReport", "uid": "8c3c7e6b-48e8-40cd-86db-8c8aed2592c8", @@ -24477,6 +25409,10 @@ ZeroDivisionError: integer division or modulo by zero "end": "2018-10-15T14:30:11.296158+00:00", "start": "2018-10-15T14:30:10.998071+00:00", }, + "setup": Object { + "end": "2018-10-15T14:30:10.997971+00:00", + "start": "2018-10-15T14:30:10.925461+00:00", + }, }, "uid": "520a92e4-325e-4077-93e6-55d7091a3f83", } @@ -25891,6 +26827,10 @@ ZeroDivisionError: integer division or modulo by zero "end": "2018-10-15T14:30:11.296158+00:00", "start": "2018-10-15T14:30:10.998071+00:00", }, + "setup": Object { + "end": "2018-10-15T14:30:10.997971+00:00", + "start": "2018-10-15T14:30:10.925461+00:00", + }, }, "uid": "520a92e4-325e-4077-93e6-55d7091a3f83", } From 8ca2bc49a0e68b022bb10fb74222606a34f8064d Mon Sep 17 00:00:00 2001 From: Robert Nemes Date: Mon, 24 Jun 2024 17:52:49 +0100 Subject: [PATCH 5/7] Fixed transient negative duration values in interactive mode --- testplan/web_ui/testing/src/Common/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testplan/web_ui/testing/src/Common/utils.js b/testplan/web_ui/testing/src/Common/utils.js index bb526df79..6b4a54841 100644 --- a/testplan/web_ui/testing/src/Common/utils.js +++ b/testplan/web_ui/testing/src/Common/utils.js @@ -39,7 +39,7 @@ function calcElapsedTime(timerField) { timeToTimestamp(interval.end) - timeToTimestamp(interval.start); }); } - return elapsed; + return elapsed < 0 ? null : elapsed; } /** From 2dd25118c202fb187185ad88f9e6379b0c848dfd Mon Sep 17 00:00:00 2001 From: Robert Nemes Date: Mon, 24 Jun 2024 18:04:44 +0100 Subject: [PATCH 6/7] Added newsfragment --- doc/newsfragments/2830_new.setup_teardown_duration.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/newsfragments/2830_new.setup_teardown_duration.rst diff --git a/doc/newsfragments/2830_new.setup_teardown_duration.rst b/doc/newsfragments/2830_new.setup_teardown_duration.rst new file mode 100644 index 000000000..40f726cf9 --- /dev/null +++ b/doc/newsfragments/2830_new.setup_teardown_duration.rst @@ -0,0 +1 @@ +Added setup, teardown and total duration times for Multitest level in the Nav bar on web UI. \ No newline at end of file From 63515e24a4207fdae8e184da38edec0854f2f577 Mon Sep 17 00:00:00 2001 From: Robert Nemes Date: Tue, 9 Jul 2024 14:06:04 +0100 Subject: [PATCH 7/7] Changed design --- testplan/web_ui/testing/src/Common/Styles.js | 5 +++ .../src/Common/__tests__/utils.test.js | 15 ++++++- testplan/web_ui/testing/src/Common/utils.js | 42 +++++++++++++++++++ .../testing/src/Nav/InteractiveNavEntry.js | 6 ++- testplan/web_ui/testing/src/Nav/NavEntry.js | 6 ++- .../InteractiveNavEntry.test.js.snap | 22 +++++----- .../__snapshots__/NavEntry.test.js.snap | 6 +-- testplan/web_ui/testing/src/Nav/navUtils.js | 24 ++++++----- 8 files changed, 99 insertions(+), 27 deletions(-) diff --git a/testplan/web_ui/testing/src/Common/Styles.js b/testplan/web_ui/testing/src/Common/Styles.js index 12b581a7a..c5c882ed7 100644 --- a/testplan/web_ui/testing/src/Common/Styles.js +++ b/testplan/web_ui/testing/src/Common/Styles.js @@ -77,6 +77,11 @@ export const navStyles = StyleSheet.create({ padding: "0.7em 0em 0.7em 0em", transition: "all 0.3s ease-out 0s !important", }, + navTime: { + display: "flex", + flexDirection: "column", + alignItems: "end", + }, environmentToggle: { padding: "0.65em 0em 0.65em 0em", }, diff --git a/testplan/web_ui/testing/src/Common/__tests__/utils.test.js b/testplan/web_ui/testing/src/Common/__tests__/utils.test.js index a6a8509c3..9c25c4855 100644 --- a/testplan/web_ui/testing/src/Common/__tests__/utils.test.js +++ b/testplan/web_ui/testing/src/Common/__tests__/utils.test.js @@ -4,6 +4,7 @@ import { NAV_ENTRY_DISPLAY_DATA } from "../defaults"; import { formatSeconds, formatMilliseconds, + formatShortDuration, getNavEntryDisplayData, } from "../utils"; @@ -33,13 +34,15 @@ describe("Common/utils", () => { }); }); - describe("formatMilliseconds and formatSeconds", () => { + describe("formatMilliseconds, formatSeconds and formatShortDuration", () => { it("returns s.SSS if the input is just less than a second", () => { const ms = 999; var millisecondsFormatted = formatMilliseconds(ms); var secondsFormatted = formatSeconds(ms / 1000); + var shortFormatted = formatShortDuration(ms); expect(millisecondsFormatted).toEqual("0.999s"); expect(secondsFormatted).toEqual("0.999s"); + expect(shortFormatted).toEqual("1.0s"); }); it("returns s.SSS if the input is whole seconds and zero milliseconds", () => { @@ -48,8 +51,10 @@ describe("Common/utils", () => { const millisecondsInput = s + ms; var millisecondsFormatted = formatMilliseconds(millisecondsInput); var secondsFormatted = formatSeconds(millisecondsInput / 1000); + var shortFormatted = formatShortDuration(millisecondsInput); expect(millisecondsFormatted).toEqual("59.000s"); expect(secondsFormatted).toEqual("59.000s"); + expect(shortFormatted).toEqual("59.0s"); }); it("returns s.SSS if the input is just less than a minute", () => { @@ -58,8 +63,10 @@ describe("Common/utils", () => { const millisecondsInput = s + ms; var millisecondsFormatted = formatMilliseconds(millisecondsInput); var secondsFormatted = formatSeconds(millisecondsInput / 1000); + var shortFormatted = formatShortDuration(millisecondsInput); expect(millisecondsFormatted).toEqual("59.999s"); expect(secondsFormatted).toEqual("59.999s"); + expect(shortFormatted).toEqual("1m"); }); it("returns m s.SSS if the input is less than an hour", () => { @@ -69,8 +76,10 @@ describe("Common/utils", () => { const millisecondsInput = m + s + ms; var millisecondsFormatted = formatMilliseconds(millisecondsInput); var secondsFormatted = formatSeconds(millisecondsInput / 1000); + var shortFormatted = formatShortDuration(millisecondsInput); expect(millisecondsFormatted).toEqual("59m 59.999s"); expect(secondsFormatted).toEqual("59m 59.999s"); + expect(shortFormatted).toEqual("1h"); }); it("returns h m s.SSS if the input is at least an hour", () => { @@ -81,8 +90,10 @@ describe("Common/utils", () => { const millisecondsInput = h + m + s + ms; var millisecondsFormatted = formatMilliseconds(millisecondsInput); var secondsFormatted = formatSeconds(millisecondsInput / 1000); + var shortFormatted = formatShortDuration(millisecondsInput); expect(millisecondsFormatted).toEqual("9h 59m 59.999s"); expect(secondsFormatted).toEqual("9h 59m 59.999s"); + expect(shortFormatted).toEqual("10h"); }); it("returns h m s.SSS if the input is at least an hour and zero minutes", () => { @@ -93,8 +104,10 @@ describe("Common/utils", () => { const millisecondsInput = h + m + s + ms; var millisecondsFormatted = formatMilliseconds(millisecondsInput); var secondsFormatted = formatSeconds(millisecondsInput / 1000); + var shortFormatted = formatShortDuration(millisecondsInput); expect(millisecondsFormatted).toEqual("59h 0m 59.999s"); expect(secondsFormatted).toEqual("59h 0m 59.999s"); + expect(shortFormatted).toEqual("59h:1m"); }); }); }); diff --git a/testplan/web_ui/testing/src/Common/utils.js b/testplan/web_ui/testing/src/Common/utils.js index 6b4a54841..8d5507dc2 100644 --- a/testplan/web_ui/testing/src/Common/utils.js +++ b/testplan/web_ui/testing/src/Common/utils.js @@ -191,6 +191,47 @@ function formatMilliseconds(durationInMilliseconds) { ); } + +/** + * Formats the input number representing milliseconds into a string + * with format H:m:s.SSS. Each value is displayed only if it is greater + * than 0 or the previous value has been displayed. + * @param {number} durationInMilliseconds + * @returns {string} + */ +function formatShortDuration(durationInMilliseconds) { + if (!_.isNumber(durationInMilliseconds)) { return "na"; }; + + durationInMilliseconds = _.round(durationInMilliseconds, -2); + + let secondsInMilliseconds = durationInMilliseconds % 60000; + let seconds = secondsInMilliseconds / 1000; + let minutesInMilliseconds = (durationInMilliseconds - secondsInMilliseconds) + / 60000; + let minutes = minutesInMilliseconds % 60; + let hours = (minutesInMilliseconds - minutes) / 60; + + const isDisplayedHours = hours > 0; + const isDisplayedMinutes = minutes > 0; + const isDisplayedSeconds = seconds > 0 && !isDisplayedHours; + const isDisplayedMilliseconds = isDisplayedSeconds && !isDisplayedMinutes; + + let hoursDisplay = isDisplayedHours ? hours + "h" : ""; + let minutesDisplay = isDisplayedMinutes ? minutes + "m" : ""; + let secondsDisplay = isDisplayedSeconds + ? isDisplayedMilliseconds + ? seconds.toFixed(1) + "s" + : seconds.toFixed(0) + "s" + : null; + + return ( + [hoursDisplay, minutesDisplay, secondsDisplay] + .filter(Boolean) + .join(":") || "0s" + ); +} + + export { calcExecutionTime, calcElapsedTime, @@ -204,6 +245,7 @@ export { encodeURIComponent2, formatSeconds, formatMilliseconds, + formatShortDuration, }; /** diff --git a/testplan/web_ui/testing/src/Nav/InteractiveNavEntry.js b/testplan/web_ui/testing/src/Nav/InteractiveNavEntry.js index e9a5dcf54..76d8aa603 100644 --- a/testplan/web_ui/testing/src/Nav/InteractiveNavEntry.js +++ b/testplan/web_ui/testing/src/Nav/InteractiveNavEntry.js @@ -93,7 +93,11 @@ const InteractiveNavEntry = (props) => {
{navTimeInfo} diff --git a/testplan/web_ui/testing/src/Nav/NavEntry.js b/testplan/web_ui/testing/src/Nav/NavEntry.js index 69429f28a..5bc8d40cc 100644 --- a/testplan/web_ui/testing/src/Nav/NavEntry.js +++ b/testplan/web_ui/testing/src/Nav/NavEntry.js @@ -54,7 +54,11 @@ const NavEntry = (props) => {
{navTimeInfo} diff --git a/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap index a39d2c41a..925b26050 100644 --- a/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap +++ b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap @@ -29,7 +29,7 @@ exports[`InteractiveNavEntry renders a testcase in "failed" state 1`] = ` className="entryIcons_9stzon" > + ( { - formatMilliseconds(setupTimeProp) - } / { - formatMilliseconds(executionTimeProp) - } / { - formatMilliseconds(teardownTimeProp) + formatShortDuration(setupTimeProp) + }/{ + formatShortDuration(executionTimeProp) + }/{ + formatShortDuration(teardownTimeProp) } ) @@ -356,14 +360,14 @@ const generateNavTimeInfo = ( _.isNumber(totalTime) ? ( - {formatMilliseconds(totalTime)} + {formatShortDuration(totalTime)} ) : null; return [ - detailedTimeElement, - totalTimeElement + totalTimeElement, + detailedTimeElement ]; };