From f072070250c8949500c90abf65afecbb0d3cdbb9 Mon Sep 17 00:00:00 2001 From: rnemes Date: Wed, 10 Jul 2024 09:41:31 +0200 Subject: [PATCH] Display multitest setup and teardown times on webUI (#1104) Added setup/teardown times to Nav --- .../2830_new.setup_teardown_duration.rst | 1 + testplan/web_ui/testing/src/Common/Styles.js | 76 + .../src/Common/__tests__/utils.test.js | 15 +- .../web_ui/testing/src/Common/fakeReport.js | 86 +- .../testing/src/Common/sampleReports.js | 113 +- testplan/web_ui/testing/src/Common/utils.js | 60 + .../testing/src/Nav/InteractiveNavEntry.js | 185 +- testplan/web_ui/testing/src/Nav/NavEntry.js | 94 +- testplan/web_ui/testing/src/Nav/NavList.js | 6 +- testplan/web_ui/testing/src/Nav/TreeView.js | 6 +- .../InteractiveNavEntry.test.js.snap | 121 +- .../InteractiveNavList.test.js.snap | 2 + .../__tests__/__snapshots__/Nav.test.js.snap | 114 +- .../__snapshots__/NavEntry.test.js.snap | 21 +- .../__snapshots__/NavList.test.js.snap | 2 + testplan/web_ui/testing/src/Nav/navUtils.js | 57 +- .../__snapshots__/BatchReport.test.js.snap | 1656 +++++++++++++---- 17 files changed, 1954 insertions(+), 661 deletions(-) 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 diff --git a/testplan/web_ui/testing/src/Common/Styles.js b/testplan/web_ui/testing/src/Common/Styles.js index 6d30e6a76..c5c882ed7 100644 --- a/testplan/web_ui/testing/src/Common/Styles.js +++ b/testplan/web_ui/testing/src/Common/Styles.js @@ -33,6 +33,82 @@ 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", + }, + navTime: { + display: "flex", + flexDirection: "column", + alignItems: "end", + }, + 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/__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/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: [ { diff --git a/testplan/web_ui/testing/src/Common/utils.js b/testplan/web_ui/testing/src/Common/utils.js index a6381dbc9..8d5507dc2 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 < 0 ? null : 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) @@ -174,8 +191,50 @@ 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, timeToTimestamp, getNavEntryDisplayData, any, @@ -186,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 764991720..76d8aa603 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,36 @@ const InteractiveNavEntry = (props) => { }} > {CATEGORY_ICONS[props.type]}
{props.name}
-
- {executionTime} - - {props.caseCountPassed}/ - {props.caseCountFailed} +
+ + {navTimeInfo} + + + {props.caseCountPassed} + / + {props.caseCountFailed} {resetReportIcon} {envStatusIcon} @@ -144,7 +150,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 +93,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/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/InteractiveNavEntry.test.js.snap index ebf750e4b..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 @@ -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__/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/Nav/__tests__/__snapshots__/NavEntry.test.js.snap b/testplan/web_ui/testing/src/Nav/__tests__/__snapshots__/NavEntry.test.js.snap index 31dd71579..78bfe33be 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
+ diff --git a/testplan/web_ui/testing/src/Nav/navUtils.js b/testplan/web_ui/testing/src/Nav/navUtils.js index 3f2e23a50..53165892d 100644 --- a/testplan/web_ui/testing/src/Nav/navUtils.js +++ b/testplan/web_ui/testing/src/Nav/navUtils.js @@ -4,14 +4,19 @@ 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 { + generateURLWithParameters, + formatShortDuration, +} from "../Common/utils"; import { isReportLeaf } from "../Report/reportUtils"; /** @@ -140,6 +145,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 +169,7 @@ export const styles = StyleSheet.create({ "overflow-y": "auto", height: "100%", }, + ...statusStyles, }); /** @@ -317,8 +327,53 @@ 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)) + ? ( + + ( + { + formatShortDuration(setupTimeProp) + }/{ + formatShortDuration(executionTimeProp) + }/{ + formatShortDuration(teardownTimeProp) + } + ) + + ) + : null; + const totalTimeElement = + _.isNumber(totalTime) + ? ( + + {formatShortDuration(totalTime)} + + ) + : null; + + return [ + totalTimeElement, + detailedTimeElement + ]; +}; + export { CreateNavButtons, + generateNavTimeInfo, GetSelectedUid, GetNavEntries, GetInteractiveNavEntries, 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", }