-
Notifications
You must be signed in to change notification settings - Fork 67
/
TestSuiteRunCard.tsx
85 lines (78 loc) · 2.46 KB
/
TestSuiteRunCard.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import {Tooltip} from 'antd';
import Link from 'components/Link';
import TestState from 'components/TestState';
import TestSuiteRunActionsMenu from 'components/TestSuiteRunActionsMenu';
import {TestState as TestStateEnum} from 'constants/TestRun.constants';
import TestSuiteRun from 'models/TestSuiteRun.model';
import Date from 'utils/Date';
import * as S from './RunCard.styled';
import {TestSuiteRunStatusIcon} from '../RunStatusIcon';
interface IProps {
linkTo: string;
run: TestSuiteRun;
testSuiteId: string;
}
const TestSuiteRunCard = ({
run: {
id: runId,
createdAt,
state,
metadata: {name, buildNumber, branch, url, source},
version,
pass,
fail,
allStepsRequiredGatesPassed,
},
testSuiteId,
linkTo,
}: IProps) => (
<Link to={linkTo}>
<S.Container $isWhite>
<TestSuiteRunStatusIcon state={state} hasFailedTests={!allStepsRequiredGatesPassed} />
<S.Info>
<div>
<S.Title>v{version}</S.Title>
</div>
<S.Row>
<Tooltip title={Date.format(createdAt)}>
<S.Text>{Date.getTimeAgo(createdAt)}</S.Text>
</Tooltip>
{source && <S.Text> • Run via {source.toUpperCase()}</S.Text>}
{/* Adding this latter when is available */}
{/* <S.Text> • 0s (executionTime missing from API)</S.Text> */}
{name && (
<a href={url} target="_blank" onClick={event => event.stopPropagation()}>
<S.Text $hasLink={Boolean(url)}> • {`${name} ${buildNumber}`}</S.Text>
</a>
)}
{branch && <S.Text> • Branch: {branch}</S.Text>}
</S.Row>
</S.Info>
{state !== TestStateEnum.FAILED && state !== TestStateEnum.FINISHED && (
<div>
<TestState testState={state} />
</div>
)}
{(state === TestStateEnum.FAILED || state === TestStateEnum.FINISHED) && (
<S.Row>
<Tooltip title="Passed assertions">
<S.HeaderDetail>
<S.HeaderDot $passed />
{pass}
</S.HeaderDetail>
</Tooltip>
<Tooltip title="Failed assertions">
<S.HeaderDetail>
<S.HeaderDot $passed={false} />
{fail}
</S.HeaderDetail>
</Tooltip>
</S.Row>
)}
<div>
<TestSuiteRunActionsMenu runId={runId} testSuiteId={testSuiteId} />
</div>
</S.Container>
</Link>
);
export default TestSuiteRunCard;