Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
fa558da6
Commit
fa558da6
authored
Jan 27, 2020
by
Paul Slaughter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move job_app_spec to Jest
parent
5f58e402
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1363 additions
and
1426 deletions
+1363
-1426
spec/frontend/jobs/components/job_app_spec.js
spec/frontend/jobs/components/job_app_spec.js
+170
-235
spec/frontend/jobs/mock_data.js
spec/frontend/jobs/mock_data.js
+1191
-0
spec/javascripts/jobs/mock_data.js
spec/javascripts/jobs/mock_data.js
+2
-1191
No files found.
spec/
javascripts
/jobs/components/job_app_spec.js
→
spec/
frontend
/jobs/components/job_app_spec.js
View file @
fa558da6
import
Vue
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
{
mount
,
createLocalVue
}
from
'
@vue/test-utils
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
mountComponentWithStore
}
from
'
spec/helpers/vue_mount_component_helper
'
;
import
{
waitForMutation
}
from
'
spec/helpers/vue_test_utils_helper
'
;
import
{
getJSONFixture
}
from
'
helpers/fixtures
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
j
obApp
from
'
~/jobs/components/job_app.vue
'
;
import
J
obApp
from
'
~/jobs/components/job_app.vue
'
;
import
createStore
from
'
~/jobs/store
'
;
import
*
as
types
from
'
~/jobs/store/mutation_types
'
;
import
job
from
'
../mock_data
'
;
describe
(
'
Job App
'
,
()
=>
{
describe
(
'
Job App
'
,
()
=>
{
const
localVue
=
createLocalVue
();
localVue
.
use
(
Vuex
);
const
delayedJobFixture
=
getJSONFixture
(
'
jobs/delayed.json
'
);
const
Component
=
Vue
.
extend
(
jobApp
);
let
store
;
let
vm
;
let
wrapper
;
let
mock
;
const
initSettings
=
{
...
...
@@ -32,16 +34,24 @@ describe('Job App ', () => {
subscriptionsMoreMinutesUrl
:
'
https://customers.gitlab.com/buy_pipeline_minutes
'
,
};
const
waitForJobReceived
=
()
=>
waitForMutation
(
store
,
types
.
RECEIVE_JOB_SUCCESS
);
const
createComponent
=
()
=>
{
wrapper
=
mount
(
JobApp
,
{
propsData
:
{
...
props
},
store
});
};
const
setupAndMount
=
({
jobData
=
{},
traceData
=
{}
}
=
{})
=>
{
mock
.
onGet
(
initSettings
.
endpoint
).
replyOnce
(
200
,
{
...
job
,
...
jobData
});
mock
.
onGet
(
`
${
initSettings
.
pagePath
}
/trace.json`
).
reply
(
200
,
traceData
);
store
.
dispatch
(
'
init
'
,
initSettings
);
const
asyncInit
=
store
.
dispatch
(
'
init
'
,
initSettings
);
vm
=
mountComponentWithStore
(
Component
,
{
props
,
store
}
);
createComponent
(
);
return
waitForJobReceived
();
return
asyncInit
.
then
(()
=>
{
jest
.
runOnlyPendingTimers
();
})
.
then
(()
=>
axios
.
waitForAll
())
.
then
(()
=>
wrapper
.
vm
.
$nextTick
());
};
beforeEach
(()
=>
{
...
...
@@ -50,94 +60,81 @@ describe('Job App ', () => {
});
afterEach
(()
=>
{
vm
.
$
destroy
();
wrapper
.
destroy
();
mock
.
restore
();
});
describe
(
'
while loading
'
,
()
=>
{
beforeEach
(()
=>
{
setupAndMount
();
store
.
state
.
isLoading
=
true
;
createComponent
();
});
it
(
'
renders loading icon
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-loading
'
)).
not
.
toBeNull
(
);
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-sidebar
'
)).
toBeNull
(
);
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-content
'
)).
toBeNull
(
);
expect
(
wrapper
.
find
(
'
.js-job-loading
'
).
exists
()).
toBe
(
true
);
expect
(
wrapper
.
find
(
'
.js-job-sidebar
'
).
exists
()).
toBe
(
false
);
expect
(
wrapper
.
find
(
'
.js-job-content
'
).
exists
()).
toBe
(
false
);
});
});
describe
(
'
with successful request
'
,
()
=>
{
describe
(
'
Header section
'
,
()
=>
{
describe
(
'
job callout message
'
,
()
=>
{
it
(
'
should not render the reason when reason is absent
'
,
done
=>
{
setupAndMount
()
.
then
(()
=>
{
expect
(
vm
.
shouldRenderCalloutMessage
).
toBe
(
false
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
it
(
'
should not render the reason when reason is absent
'
,
()
=>
setupAndMount
().
then
(()
=>
{
expect
(
wrapper
.
vm
.
shouldRenderCalloutMessage
).
toBe
(
false
);
}));
it
(
'
should render the reason when reason is present
'
,
done
=>
{
it
(
'
should render the reason when reason is present
'
,
()
=>
setupAndMount
({
jobData
:
{
callout_message
:
'
There is an unkown failure, please try again
'
,
},
})
.
then
(()
=>
{
expect
(
vm
.
shouldRenderCalloutMessage
).
toBe
(
true
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
vm
.
shouldRenderCalloutMessage
).
toBe
(
true
);
}));
});
describe
(
'
triggered job
'
,
()
=>
{
beforeEach
(
done
=>
{
beforeEach
(
()
=>
{
const
aYearAgo
=
new
Date
();
aYearAgo
.
setFullYear
(
aYearAgo
.
getFullYear
()
-
1
);
setupAndMount
({
jobData
:
{
started
:
aYearAgo
.
toISOString
()
}
})
.
then
(
done
)
.
catch
(
done
.
fail
);
return
setupAndMount
({
jobData
:
{
started
:
aYearAgo
.
toISOString
()
}
});
});
it
(
'
should render provided job information
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.header-main-content
'
)
.
textContent
.
replace
(
/
\s
+/g
,
'
'
)
wrapper
.
find
(
'
.header-main-content
'
)
.
text
()
.
replace
(
/
\s
+/g
,
'
'
)
.
trim
(),
).
toContain
(
'
passed Job #4757 triggered 1 year ago by Root
'
);
});
it
(
'
should render new issue link
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-new-issue
'
).
getAttribute
(
'
href
'
)).
toEqual
(
job
.
new_issue_path
,
);
expect
(
wrapper
.
find
(
'
.js-new-issue
'
).
attributes
(
'
href
'
)).
toEqual
(
job
.
new_issue_path
);
});
});
describe
(
'
created job
'
,
()
=>
{
it
(
'
should render created key
'
,
done
=>
{
setupAndMount
()
.
then
(()
=>
{
it
(
'
should render created key
'
,
()
=>
setupAndMount
().
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.header-main-content
'
)
.
textContent
.
replace
(
/
\s
+/g
,
'
'
)
wrapper
.
find
(
'
.header-main-content
'
)
.
text
()
.
replace
(
/
\s
+/g
,
'
'
)
.
trim
(),
).
toContain
(
'
passed Job #4757 created 3 weeks ago by Root
'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}));
});
});
describe
(
'
stuck block
'
,
()
=>
{
describe
(
'
without active runners availabl
'
,
()
=>
{
it
(
'
renders stuck block when there are no runners
'
,
done
=>
{
it
(
'
renders stuck block when there are no runners
'
,
()
=>
setupAndMount
({
jobData
:
{
status
:
{
...
...
@@ -154,20 +151,14 @@ describe('Job App ', () => {
},
tags
:
[],
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-stuck
'
)).
not
.
toBeNull
();
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-stuck .js-stuck-no-active-runner
'
),
).
not
.
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-stuck
'
).
exists
()).
toBe
(
true
);
expect
(
wrapper
.
find
(
'
.js-job-stuck .js-stuck-no-active-runner
'
).
exists
()).
toBe
(
true
);
}));
});
describe
(
'
when available runners can not run specified tag
'
,
()
=>
{
it
(
'
renders tags in stuck block when there are no runners
'
,
done
=>
{
it
(
'
renders tags in stuck block when there are no runners
'
,
()
=>
setupAndMount
({
jobData
:
{
status
:
{
...
...
@@ -183,18 +174,14 @@ describe('Job App ', () => {
online
:
false
,
},
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-stuck
'
).
textContent
).
toContain
(
job
.
tags
[
0
]);
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-stuck .js-stuck-with-tags
'
)).
not
.
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-stuck
'
).
text
()).
toContain
(
job
.
tags
[
0
]);
expect
(
wrapper
.
find
(
'
.js-job-stuck .js-stuck-with-tags
'
).
exists
()).
toBe
(
true
);
}));
});
describe
(
'
when runners are offline and build has tags
'
,
()
=>
{
it
(
'
renders message about job being stuck because of no runners with the specified tags
'
,
done
=>
{
it
(
'
renders message about job being stuck because of no runners with the specified tags
'
,
()
=>
setupAndMount
({
jobData
:
{
status
:
{
...
...
@@ -210,32 +197,24 @@ describe('Job App ', () => {
online
:
true
,
},
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-stuck
'
).
textContent
).
toContain
(
job
.
tags
[
0
]);
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-stuck .js-stuck-with-tags
'
)).
not
.
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-stuck
'
).
text
()).
toContain
(
job
.
tags
[
0
]);
expect
(
wrapper
.
find
(
'
.js-job-stuck .js-stuck-with-tags
'
).
exists
()).
toBe
(
true
);
}));
});
it
(
'
does not renders stuck block when there are no runners
'
,
done
=>
{
it
(
'
does not renders stuck block when there are no runners
'
,
()
=>
setupAndMount
({
jobData
:
{
runners
:
{
available
:
true
},
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-stuck
'
)).
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-stuck
'
).
exists
()).
toBe
(
false
);
}));
});
describe
(
'
unmet prerequisites block
'
,
()
=>
{
it
(
'
renders unmet prerequisites block when there is an unmet prerequisites failure
'
,
done
=>
{
it
(
'
renders unmet prerequisites block when there is an unmet prerequisites failure
'
,
()
=>
setupAndMount
({
jobData
:
{
status
:
{
...
...
@@ -258,17 +237,13 @@ describe('Job App ', () => {
},
tags
:
[],
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-failed
'
)).
not
.
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-failed
'
).
exists
()).
toBe
(
true
);
}));
});
describe
(
'
environments block
'
,
()
=>
{
it
(
'
renders environment block when job has environment
'
,
done
=>
{
it
(
'
renders environment block when job has environment
'
,
()
=>
setupAndMount
({
jobData
:
{
deployment_status
:
{
...
...
@@ -278,26 +253,18 @@ describe('Job App ', () => {
},
},
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-environment
'
)).
not
.
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-environment
'
).
exists
()).
toBe
(
true
);
}));
it
(
'
does not render environment block when job has environment
'
,
done
=>
{
setupAndMount
()
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-environment
'
)).
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
it
(
'
does not render environment block when job has environment
'
,
()
=>
setupAndMount
().
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-environment
'
).
exists
()).
toBe
(
false
);
}));
});
describe
(
'
erased block
'
,
()
=>
{
it
(
'
renders erased block when `erased` is true
'
,
done
=>
{
it
(
'
renders erased block when `erased` is true
'
,
()
=>
setupAndMount
({
jobData
:
{
erased_by
:
{
...
...
@@ -306,30 +273,22 @@ describe('Job App ', () => {
},
erased_at
:
'
2016-11-07T11:11:16.525Z
'
,
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-erased-block
'
)).
not
.
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-erased-block
'
).
exists
()).
toBe
(
true
);
}));
it
(
'
does not render erased block when `erased` is false
'
,
done
=>
{
it
(
'
does not render erased block when `erased` is false
'
,
()
=>
setupAndMount
({
jobData
:
{
erased_at
:
null
,
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-erased-block
'
)).
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-erased-block
'
).
exists
()).
toBe
(
false
);
}));
});
describe
(
'
empty states block
'
,
()
=>
{
it
(
'
renders empty state when job does not have trace and is not running
'
,
done
=>
{
it
(
'
renders empty state when job does not have trace and is not running
'
,
()
=>
setupAndMount
({
jobData
:
{
has_trace
:
false
,
...
...
@@ -352,15 +311,11 @@ describe('Job App ', () => {
},
},
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-empty-state
'
)).
not
.
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-empty-state
'
).
exists
()).
toBe
(
true
);
}));
it
(
'
does not render empty state when job does not have trace but it is running
'
,
done
=>
{
it
(
'
does not render empty state when job does not have trace but it is running
'
,
()
=>
setupAndMount
({
jobData
:
{
has_trace
:
false
,
...
...
@@ -372,38 +327,29 @@ describe('Job App ', () => {
details_path
:
'
path
'
,
},
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-empty-state
'
)).
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-empty-state
'
).
exists
()).
toBe
(
false
);
}));
it
(
'
does not render empty state when job has trace but it is not running
'
,
done
=>
{
setupAndMount
({
jobData
:
{
has_trace
:
true
}
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-empty-state
'
)).
toBeNull
();
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
it
(
'
does not render empty state when job has trace but it is not running
'
,
()
=>
setupAndMount
({
jobData
:
{
has_trace
:
true
}
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-empty-state
'
).
exists
()).
toBe
(
false
);
}));
it
(
'
displays remaining time for a delayed job
'
,
done
=>
{
it
(
'
displays remaining time for a delayed job
'
,
()
=>
{
const
oneHourInMilliseconds
=
3600000
;
spyOn
(
Date
,
'
now
'
).
and
.
callFake
(
jest
.
spyOn
(
Date
,
'
now
'
)
.
mockImplementation
(
()
=>
new
Date
(
delayedJobFixture
.
scheduled_at
).
getTime
()
-
oneHourInMilliseconds
,
);
setupAndMount
({
jobData
:
delayedJobFixture
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-job-empty-state
'
)).
not
.
toBeNull
();
return
setupAndMount
({
jobData
:
delayedJobFixture
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-job-empty-state
'
).
exists
()).
toBe
(
true
);
const
title
=
vm
.
$el
.
querySelector
(
'
.js-job-empty-state-title
'
);
const
title
=
wrapper
.
find
(
'
.js-job-empty-state-title
'
).
text
(
);
expect
(
title
).
toContainText
(
'
01:00:00
'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
expect
(
title
).
toEqual
(
'
This is a delayed job to run in 01:00:00
'
);
});
});
});
...
...
@@ -422,8 +368,11 @@ describe('Job App ', () => {
},
})
.
then
(()
=>
{
vm
.
$el
.
querySelectorAll
(
'
.blocks-container > *
'
).
forEach
(
block
=>
{
expect
(
block
.
textContent
.
trim
()).
not
.
toBe
(
''
);
const
blocks
=
wrapper
.
findAll
(
'
.blocks-container > *
'
).
wrappers
;
expect
(
blocks
.
length
).
toBeGreaterThan
(
0
);
blocks
.
forEach
(
block
=>
{
expect
(
block
.
text
().
trim
()).
not
.
toBe
(
''
);
});
})
.
then
(
done
)
...
...
@@ -433,32 +382,24 @@ describe('Job App ', () => {
});
describe
(
'
archived job
'
,
()
=>
{
beforeEach
(
done
=>
{
setupAndMount
({
jobData
:
{
archived
:
true
}
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
beforeEach
(()
=>
setupAndMount
({
jobData
:
{
archived
:
true
}
}));
it
(
'
renders warning about job being archived
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-archived-job
'
)).
not
.
toBeNull
(
);
expect
(
wrapper
.
find
(
'
.js-archived-job
'
).
exists
()).
toBe
(
true
);
});
});
describe
(
'
non-archived job
'
,
()
=>
{
beforeEach
(
done
=>
{
setupAndMount
()
.
then
(
done
)
.
catch
(
done
.
fail
);
});
beforeEach
(()
=>
setupAndMount
());
it
(
'
does not warning about job being archived
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-archived-job
'
)).
toBeNull
(
);
expect
(
wrapper
.
find
(
'
.js-archived-job
'
).
exists
()).
toBe
(
false
);
});
});
describe
(
'
trace output
'
,
()
=>
{
describe
(
'
with append flag
'
,
()
=>
{
it
(
'
appends the log content to the existing one
'
,
done
=>
{
it
(
'
appends the log content to the existing one
'
,
()
=>
setupAndMount
({
traceData
:
{
html
:
'
<span>More<span>
'
,
...
...
@@ -469,20 +410,22 @@ describe('Job App ', () => {
},
})
.
then
(()
=>
{
vm
.
$
store
.
state
.
trace
=
'
Update
'
;
store
.
state
.
trace
=
'
Update
'
;
return
vm
.
$nextTick
();
return
wrapper
.
vm
.
$nextTick
();
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-build-trace
'
).
textContent
.
trim
()).
toContain
(
'
Update
'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
expect
(
wrapper
.
find
(
'
.js-build-trace
'
)
.
text
()
.
trim
(),
).
toEqual
(
'
Update
'
);
}));
});
describe
(
'
without append flag
'
,
()
=>
{
it
(
'
replaces the trace
'
,
done
=>
{
it
(
'
replaces the trace
'
,
()
=>
setupAndMount
({
traceData
:
{
html
:
'
<span>Different<span>
'
,
...
...
@@ -490,24 +433,19 @@ describe('Job App ', () => {
append
:
false
,
complete
:
true
,
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-build-trace
'
).
textContent
.
trim
()).
not
.
toContain
(
'
Update
'
,
);
expect
(
vm
.
$el
.
querySelector
(
'
.js-build-trace
'
).
textContent
.
trim
()).
toContain
(
'
Different
'
,
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-build-trace
'
)
.
text
()
.
trim
(),
).
toEqual
(
'
Different
'
);
}));
});
describe
(
'
truncated information
'
,
()
=>
{
describe
(
'
when size is less than total
'
,
()
=>
{
it
(
'
shows information about truncated log
'
,
done
=>
{
it
(
'
shows information about truncated log
'
,
()
=>
{
mock
.
onGet
(
`
${
props
.
pagePath
}
/trace.json`
).
reply
(
200
,
{
html
:
'
<span>Update</span>
'
,
status
:
'
success
'
,
...
...
@@ -517,7 +455,7 @@ describe('Job App ', () => {
complete
:
true
,
});
setupAndMount
({
return
setupAndMount
({
traceData
:
{
html
:
'
<span>Update</span>
'
,
status
:
'
success
'
,
...
...
@@ -526,19 +464,19 @@ describe('Job App ', () => {
total
:
100
,
complete
:
true
,
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-truncated-info
'
).
textContent
.
trim
()).
toContain
(
'
50 bytes
'
,
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
})
.
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-truncated-info
'
)
.
text
()
.
trim
(),
).
toContain
(
'
Showing last 50 bytes
'
);
}
);
});
});
describe
(
'
when size is equal than total
'
,
()
=>
{
it
(
'
does not show the truncated information
'
,
done
=>
{
it
(
'
does not show the truncated information
'
,
()
=>
setupAndMount
({
traceData
:
{
html
:
'
<span>Update</span>
'
,
...
...
@@ -548,20 +486,19 @@ describe('Job App ', () => {
total
:
100
,
complete
:
true
,
},
})
.
then
(()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-truncated-info
'
).
textContent
.
trim
()).
not
.
toContain
(
'
50 bytes
'
,
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}).
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-truncated-info
'
)
.
text
()
.
trim
(),
).
toEqual
(
''
);
}));
});
});
describe
(
'
trace controls
'
,
()
=>
{
beforeEach
(
done
=>
{
beforeEach
(
()
=>
setupAndMount
({
traceData
:
{
html
:
'
<span>Update</span>
'
,
...
...
@@ -571,22 +508,20 @@ describe('Job App ', () => {
total
:
100
,
complete
:
true
,
},
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
}),
);
it
(
'
should render scroll buttons
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-scroll-top
'
)).
not
.
toBeNull
(
);
expect
(
vm
.
$el
.
querySelector
(
'
.js-scroll-bottom
'
)).
not
.
toBeNull
(
);
expect
(
wrapper
.
find
(
'
.js-scroll-top
'
).
exists
()).
toBe
(
true
);
expect
(
wrapper
.
find
(
'
.js-scroll-bottom
'
).
exists
()).
toBe
(
true
);
});
it
(
'
should render link to raw ouput
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-raw-link-controller
'
)).
not
.
toBeNull
(
);
expect
(
wrapper
.
find
(
'
.js-raw-link-controller
'
).
exists
()).
toBe
(
true
);
});
it
(
'
should render link to erase job
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-erase-link
'
)).
not
.
toBeNull
(
);
expect
(
wrapper
.
find
(
'
.js-erase-link
'
).
exists
()).
toBe
(
true
);
});
});
});
...
...
spec/frontend/jobs/mock_data.js
0 → 100644
View file @
fa558da6
import
{
TEST_HOST
}
from
'
spec/test_constants
'
;
const
threeWeeksAgo
=
new
Date
();
threeWeeksAgo
.
setDate
(
threeWeeksAgo
.
getDate
()
-
21
);
export
const
stages
=
[
{
name
:
'
build
'
,
title
:
'
build: running
'
,
groups
:
[
{
name
:
'
build:linux
'
,
size
:
1
,
status
:
{
icon
:
'
status_pending
'
,
text
:
'
pending
'
,
label
:
'
pending
'
,
group
:
'
pending
'
,
tooltip
:
'
pending
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
illustration
:
{
image
:
'
illustrations/pending_job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job has not started yet
'
,
content
:
'
This job is in pending state and is waiting to be picked by a runner
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_pending-5bdf338420e5221ca24353b6bff1c9367189588750632e9a871b7af09ff6a2ae.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
1180
,
name
:
'
build:linux
'
,
started
:
false
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
cancel_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
playable
:
false
,
created_at
:
'
2018-09-28T11:09:57.229Z
'
,
updated_at
:
'
2018-09-28T11:09:57.503Z
'
,
status
:
{
icon
:
'
status_pending
'
,
text
:
'
pending
'
,
label
:
'
pending
'
,
group
:
'
pending
'
,
tooltip
:
'
pending
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
illustration
:
{
image
:
'
illustrations/pending_job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job has not started yet
'
,
content
:
'
This job is in pending state and is waiting to be picked by a runner
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_pending-5bdf338420e5221ca24353b6bff1c9367189588750632e9a871b7af09ff6a2ae.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
build:osx
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
444
,
name
:
'
build:osx
'
,
started
:
'
2018-05-18T05:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.364Z
'
,
updated_at
:
'
2018-05-18T15:32:54.364Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
],
status
:
{
icon
:
'
status_running
'
,
text
:
'
running
'
,
label
:
'
running
'
,
group
:
'
running
'
,
tooltip
:
'
running
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#build
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_running-9c635b2419a8e1ec991c993061b89cc5aefc0743bb238ecd0c381e7741a70e8c.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#build
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=build
'
,
},
{
name
:
'
test
'
,
title
:
'
test: passed with warnings
'
,
groups
:
[
{
name
:
'
jenkins
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
null
,
group
:
'
success
'
,
tooltip
:
null
,
has_details
:
false
,
details_path
:
null
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
jobs
:
[
{
id
:
459
,
name
:
'
jenkins
'
,
started
:
'
2018-05-18T09:32:20.658Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/459
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.330Z
'
,
updated_at
:
'
2018-05-18T15:32:55.330Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
null
,
group
:
'
success
'
,
tooltip
:
null
,
has_details
:
false
,
details_path
:
null
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
},
],
},
{
name
:
'
rspec:linux
'
,
size
:
3
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
false
,
details_path
:
null
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
jobs
:
[
{
id
:
445
,
name
:
'
rspec:linux 0 3
'
,
started
:
'
2018-05-18T07:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/445
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/445/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.425Z
'
,
updated_at
:
'
2018-05-18T15:32:54.425Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/445
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/445/retry
'
,
method
:
'
post
'
,
},
},
},
{
id
:
446
,
name
:
'
rspec:linux 1 3
'
,
started
:
'
2018-05-18T07:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/446
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/446/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.506Z
'
,
updated_at
:
'
2018-05-18T15:32:54.506Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/446
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/446/retry
'
,
method
:
'
post
'
,
},
},
},
{
id
:
447
,
name
:
'
rspec:linux 2 3
'
,
started
:
'
2018-05-18T07:32:20.656Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/447
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/447/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.572Z
'
,
updated_at
:
'
2018-05-18T15:32:54.572Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/447
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/447/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
rspec:osx
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/452
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/452/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
452
,
name
:
'
rspec:osx
'
,
started
:
'
2018-05-18T07:32:20.657Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/452
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/452/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.920Z
'
,
updated_at
:
'
2018-05-18T15:32:54.920Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/452
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/452/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
rspec:windows
'
,
size
:
3
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
false
,
details_path
:
null
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
jobs
:
[
{
id
:
448
,
name
:
'
rspec:windows 0 3
'
,
started
:
'
2018-05-18T07:32:20.656Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/448
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/448/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.639Z
'
,
updated_at
:
'
2018-05-18T15:32:54.639Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/448
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/448/retry
'
,
method
:
'
post
'
,
},
},
},
{
id
:
449
,
name
:
'
rspec:windows 1 3
'
,
started
:
'
2018-05-18T07:32:20.656Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/449
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/449/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.703Z
'
,
updated_at
:
'
2018-05-18T15:32:54.703Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/449
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/449/retry
'
,
method
:
'
post
'
,
},
},
},
{
id
:
451
,
name
:
'
rspec:windows 2 3
'
,
started
:
'
2018-05-18T07:32:20.657Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/451
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/451/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.853Z
'
,
updated_at
:
'
2018-05-18T15:32:54.853Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/451
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/451/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
spinach:linux
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/453
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/453/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
453
,
name
:
'
spinach:linux
'
,
started
:
'
2018-05-18T07:32:20.657Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/453
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/453/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.993Z
'
,
updated_at
:
'
2018-05-18T15:32:54.993Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/453
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/453/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
spinach:osx
'
,
size
:
1
,
status
:
{
icon
:
'
status_warning
'
,
text
:
'
failed
'
,
label
:
'
failed (allowed to fail)
'
,
group
:
'
failed-with-warnings
'
,
tooltip
:
'
failed - (unknown failure) (allowed to fail)
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/454
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/454/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
454
,
name
:
'
spinach:osx
'
,
started
:
'
2018-05-18T07:32:20.657Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/454
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/454/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.053Z
'
,
updated_at
:
'
2018-05-18T15:32:55.053Z
'
,
status
:
{
icon
:
'
status_warning
'
,
text
:
'
failed
'
,
label
:
'
failed (allowed to fail)
'
,
group
:
'
failed-with-warnings
'
,
tooltip
:
'
failed - (unknown failure) (allowed to fail)
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/454
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/454/retry
'
,
method
:
'
post
'
,
},
},
callout_message
:
'
There is an unknown failure, please try again
'
,
recoverable
:
true
,
},
],
},
],
status
:
{
icon
:
'
status_warning
'
,
text
:
'
passed
'
,
label
:
'
passed with warnings
'
,
group
:
'
success-with-warnings
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#test
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#test
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=test
'
,
},
{
name
:
'
deploy
'
,
title
:
'
deploy: running
'
,
groups
:
[
{
name
:
'
production
'
,
size
:
1
,
status
:
{
icon
:
'
status_created
'
,
text
:
'
created
'
,
label
:
'
created
'
,
group
:
'
created
'
,
tooltip
:
'
created
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/457
'
,
illustration
:
{
image
:
'
illustrations/job_not_triggered.svg
'
,
size
:
'
svg-306
'
,
title
:
'
This job has not been triggered yet
'
,
content
:
'
This job depends on upstream jobs that need to succeed in order for this job to be triggered
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/457/cancel
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
457
,
name
:
'
production
'
,
started
:
false
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/457
'
,
cancel_path
:
'
/gitlab-org/gitlab-shell/-/jobs/457/cancel
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.259Z
'
,
updated_at
:
'
2018-09-28T11:09:57.454Z
'
,
status
:
{
icon
:
'
status_created
'
,
text
:
'
created
'
,
label
:
'
created
'
,
group
:
'
created
'
,
tooltip
:
'
created
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/457
'
,
illustration
:
{
image
:
'
illustrations/job_not_triggered.svg
'
,
size
:
'
svg-306
'
,
title
:
'
This job has not been triggered yet
'
,
content
:
'
This job depends on upstream jobs that need to succeed in order for this job to be triggered
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/457/cancel
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
staging
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/455
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/455/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
455
,
name
:
'
staging
'
,
started
:
'
2018-05-18T09:32:20.658Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/455
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/455/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.119Z
'
,
updated_at
:
'
2018-05-18T15:32:55.119Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/455
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/455/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
stop staging
'
,
size
:
1
,
status
:
{
icon
:
'
status_created
'
,
text
:
'
created
'
,
label
:
'
created
'
,
group
:
'
created
'
,
tooltip
:
'
created
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/456
'
,
illustration
:
{
image
:
'
illustrations/job_not_triggered.svg
'
,
size
:
'
svg-306
'
,
title
:
'
This job has not been triggered yet
'
,
content
:
'
This job depends on upstream jobs that need to succeed in order for this job to be triggered
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/456/cancel
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
456
,
name
:
'
stop staging
'
,
started
:
false
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/456
'
,
cancel_path
:
'
/gitlab-org/gitlab-shell/-/jobs/456/cancel
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.205Z
'
,
updated_at
:
'
2018-09-28T11:09:57.396Z
'
,
status
:
{
icon
:
'
status_created
'
,
text
:
'
created
'
,
label
:
'
created
'
,
group
:
'
created
'
,
tooltip
:
'
created
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/456
'
,
illustration
:
{
image
:
'
illustrations/job_not_triggered.svg
'
,
size
:
'
svg-306
'
,
title
:
'
This job has not been triggered yet
'
,
content
:
'
This job depends on upstream jobs that need to succeed in order for this job to be triggered
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/456/cancel
'
,
method
:
'
post
'
,
},
},
},
],
},
],
status
:
{
icon
:
'
status_running
'
,
text
:
'
running
'
,
label
:
'
running
'
,
group
:
'
running
'
,
tooltip
:
'
running
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#deploy
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_running-9c635b2419a8e1ec991c993061b89cc5aefc0743bb238ecd0c381e7741a70e8c.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#deploy
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=deploy
'
,
},
{
name
:
'
notify
'
,
title
:
'
notify: manual action
'
,
groups
:
[
{
name
:
'
slack
'
,
size
:
1
,
status
:
{
icon
:
'
status_manual
'
,
text
:
'
manual
'
,
label
:
'
manual play action
'
,
group
:
'
manual
'
,
tooltip
:
'
manual action
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/458
'
,
illustration
:
{
image
:
'
illustrations/manual_action.svg
'
,
size
:
'
svg-394
'
,
title
:
'
This job requires a manual action
'
,
content
:
'
This job depends on a user to trigger its process. Often they are used to deploy code to production environments
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png
'
,
action
:
{
icon
:
'
play
'
,
title
:
'
Play
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/458/play
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
458
,
name
:
'
slack
'
,
started
:
null
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/458
'
,
play_path
:
'
/gitlab-org/gitlab-shell/-/jobs/458/play
'
,
playable
:
true
,
created_at
:
'
2018-05-18T15:32:55.303Z
'
,
updated_at
:
'
2018-05-18T15:34:08.535Z
'
,
status
:
{
icon
:
'
status_manual
'
,
text
:
'
manual
'
,
label
:
'
manual play action
'
,
group
:
'
manual
'
,
tooltip
:
'
manual action
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/458
'
,
illustration
:
{
image
:
'
illustrations/manual_action.svg
'
,
size
:
'
svg-394
'
,
title
:
'
This job requires a manual action
'
,
content
:
'
This job depends on a user to trigger its process. Often they are used to deploy code to production environments
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png
'
,
action
:
{
icon
:
'
play
'
,
title
:
'
Play
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/458/play
'
,
method
:
'
post
'
,
},
},
},
],
},
],
status
:
{
icon
:
'
status_manual
'
,
text
:
'
manual
'
,
label
:
'
manual action
'
,
group
:
'
manual
'
,
tooltip
:
'
manual action
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#notify
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#notify
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=notify
'
,
},
];
export
default
{
id
:
4757
,
name
:
'
test
'
,
build_path
:
'
/root/ci-mock/-/jobs/4757
'
,
retry_path
:
'
/root/ci-mock/-/jobs/4757/retry
'
,
cancel_path
:
'
/root/ci-mock/-/jobs/4757/cancel
'
,
new_issue_path
:
'
/root/ci-mock/issues/new
'
,
playable
:
false
,
created_at
:
threeWeeksAgo
.
toISOString
(),
updated_at
:
threeWeeksAgo
.
toISOString
(),
finished_at
:
threeWeeksAgo
.
toISOString
(),
queued
:
9.54
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
has_details
:
true
,
details_path
:
`
${
TEST_HOST
}
/root/ci-mock/-/jobs/4757`
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/root/ci-mock/-/jobs/4757/retry
'
,
method
:
'
post
'
,
},
},
coverage
:
20
,
erased_at
:
threeWeeksAgo
.
toISOString
(),
erased
:
false
,
duration
:
6.785563
,
tags
:
[
'
tag
'
],
user
:
{
name
:
'
Root
'
,
username
:
'
root
'
,
id
:
1
,
state
:
'
active
'
,
avatar_url
:
'
https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80
\
u0026d=identicon
'
,
web_url
:
'
http://localhost:3000/root
'
,
},
erase_path
:
'
/root/ci-mock/-/jobs/4757/erase
'
,
artifacts
:
[
null
],
runner
:
{
id
:
1
,
description
:
'
local ci runner
'
,
edit_path
:
'
/root/ci-mock/runners/1/edit
'
,
},
pipeline
:
{
id
:
140
,
user
:
{
name
:
'
Root
'
,
username
:
'
root
'
,
id
:
1
,
state
:
'
active
'
,
avatar_url
:
'
https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80
\
u0026d=identicon
'
,
web_url
:
'
http://localhost:3000/root
'
,
},
active
:
false
,
coverage
:
null
,
source
:
'
unknown
'
,
created_at
:
'
2017-05-24T09:59:58.634Z
'
,
updated_at
:
'
2017-06-01T17:32:00.062Z
'
,
path
:
'
/root/ci-mock/pipelines/140
'
,
flags
:
{
latest
:
true
,
stuck
:
false
,
yaml_errors
:
false
,
retryable
:
false
,
cancelable
:
false
,
},
details
:
{
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
has_details
:
true
,
details_path
:
'
/root/ci-mock/pipelines/140
'
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png
'
,
},
duration
:
6
,
finished_at
:
'
2017-06-01T17:32:00.042Z
'
,
stages
:
[
{
dropdown_path
:
'
/jashkenas/underscore/pipelines/16/stage.json?stage=build
'
,
name
:
'
build
'
,
path
:
'
/jashkenas/underscore/pipelines/16#build
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
},
title
:
'
build: passed
'
,
},
{
dropdown_path
:
'
/jashkenas/underscore/pipelines/16/stage.json?stage=test
'
,
name
:
'
test
'
,
path
:
'
/jashkenas/underscore/pipelines/16#test
'
,
status
:
{
icon
:
'
status_warning
'
,
text
:
'
passed
'
,
label
:
'
passed with warnings
'
,
group
:
'
success-with-warnings
'
,
},
title
:
'
test: passed with warnings
'
,
},
],
},
ref
:
{
name
:
'
abc
'
,
path
:
'
/root/ci-mock/commits/abc
'
,
tag
:
false
,
branch
:
true
,
},
commit
:
{
id
:
'
c58647773a6b5faf066d4ad6ff2c9fbba5f180f6
'
,
short_id
:
'
c5864777
'
,
title
:
'
Add new file
'
,
created_at
:
'
2017-05-24T10:59:52.000+01:00
'
,
parent_ids
:
[
'
798e5f902592192afaba73f4668ae30e56eae492
'
],
message
:
'
Add new file
'
,
author_name
:
'
Root
'
,
author_email
:
'
admin@example.com
'
,
authored_date
:
'
2017-05-24T10:59:52.000+01:00
'
,
committer_name
:
'
Root
'
,
committer_email
:
'
admin@example.com
'
,
committed_date
:
'
2017-05-24T10:59:52.000+01:00
'
,
author
:
{
name
:
'
Root
'
,
username
:
'
root
'
,
id
:
1
,
state
:
'
active
'
,
avatar_url
:
'
https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80
\
u0026d=identicon
'
,
web_url
:
'
http://localhost:3000/root
'
,
},
author_gravatar_url
:
'
https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80
\
u0026d=identicon
'
,
commit_url
:
'
http://localhost:3000/root/ci-mock/commit/c58647773a6b5faf066d4ad6ff2c9fbba5f180f6
'
,
commit_path
:
'
/root/ci-mock/commit/c58647773a6b5faf066d4ad6ff2c9fbba5f180f6
'
,
},
},
metadata
:
{
timeout_human_readable
:
'
1m 40s
'
,
timeout_source
:
'
runner
'
,
},
merge_request
:
{
iid
:
2
,
path
:
'
/root/ci-mock/merge_requests/2
'
,
},
raw_path
:
'
/root/ci-mock/builds/4757/raw
'
,
has_trace
:
true
,
};
export
const
jobsInStage
=
{
name
:
'
build
'
,
title
:
'
build: running
'
,
latest_statuses
:
[
{
id
:
1180
,
name
:
'
build:linux
'
,
started
:
false
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
cancel_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
playable
:
false
,
created_at
:
'
2018-09-28T11:09:57.229Z
'
,
updated_at
:
'
2018-09-28T11:09:57.503Z
'
,
status
:
{
icon
:
'
status_pending
'
,
text
:
'
pending
'
,
label
:
'
pending
'
,
group
:
'
pending
'
,
tooltip
:
'
pending
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
illustration
:
{
image
:
'
illustrations/pending_job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job has not started yet
'
,
content
:
'
This job is in pending state and is waiting to be picked by a runner
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_pending-5bdf338420e5221ca24353b6bff1c9367189588750632e9a871b7af09ff6a2ae.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
method
:
'
post
'
,
},
},
},
{
id
:
444
,
name
:
'
build:osx
'
,
started
:
'
2018-05-18T05:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.364Z
'
,
updated_at
:
'
2018-05-18T15:32:54.364Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
method
:
'
post
'
,
},
},
},
],
retried
:
[
{
id
:
443
,
name
:
'
build:linux
'
,
started
:
'
2018-05-18T06:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/443
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/443/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.296Z
'
,
updated_at
:
'
2018-05-18T15:32:54.296Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed (retried)
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/443
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/443/retry
'
,
method
:
'
post
'
,
},
},
},
],
status
:
{
icon
:
'
status_running
'
,
text
:
'
running
'
,
label
:
'
running
'
,
group
:
'
running
'
,
tooltip
:
'
running
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#build
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_running-9c635b2419a8e1ec991c993061b89cc5aefc0743bb238ecd0c381e7741a70e8c.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#build
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=build
'
,
};
spec/javascripts/jobs/mock_data.js
View file @
fa558da6
import
{
TEST_HOST
}
from
'
spec/test_constants
'
;
const
threeWeeksAgo
=
new
Date
();
threeWeeksAgo
.
setDate
(
threeWeeksAgo
.
getDate
()
-
21
);
export
const
stages
=
[
{
name
:
'
build
'
,
title
:
'
build: running
'
,
groups
:
[
{
name
:
'
build:linux
'
,
size
:
1
,
status
:
{
icon
:
'
status_pending
'
,
text
:
'
pending
'
,
label
:
'
pending
'
,
group
:
'
pending
'
,
tooltip
:
'
pending
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
illustration
:
{
image
:
'
illustrations/pending_job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job has not started yet
'
,
content
:
'
This job is in pending state and is waiting to be picked by a runner
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_pending-5bdf338420e5221ca24353b6bff1c9367189588750632e9a871b7af09ff6a2ae.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
1180
,
name
:
'
build:linux
'
,
started
:
false
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
cancel_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
playable
:
false
,
created_at
:
'
2018-09-28T11:09:57.229Z
'
,
updated_at
:
'
2018-09-28T11:09:57.503Z
'
,
status
:
{
icon
:
'
status_pending
'
,
text
:
'
pending
'
,
label
:
'
pending
'
,
group
:
'
pending
'
,
tooltip
:
'
pending
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
illustration
:
{
image
:
'
illustrations/pending_job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job has not started yet
'
,
content
:
'
This job is in pending state and is waiting to be picked by a runner
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_pending-5bdf338420e5221ca24353b6bff1c9367189588750632e9a871b7af09ff6a2ae.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
build:osx
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
444
,
name
:
'
build:osx
'
,
started
:
'
2018-05-18T05:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.364Z
'
,
updated_at
:
'
2018-05-18T15:32:54.364Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
],
status
:
{
icon
:
'
status_running
'
,
text
:
'
running
'
,
label
:
'
running
'
,
group
:
'
running
'
,
tooltip
:
'
running
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#build
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_running-9c635b2419a8e1ec991c993061b89cc5aefc0743bb238ecd0c381e7741a70e8c.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#build
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=build
'
,
},
{
name
:
'
test
'
,
title
:
'
test: passed with warnings
'
,
groups
:
[
{
name
:
'
jenkins
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
null
,
group
:
'
success
'
,
tooltip
:
null
,
has_details
:
false
,
details_path
:
null
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
jobs
:
[
{
id
:
459
,
name
:
'
jenkins
'
,
started
:
'
2018-05-18T09:32:20.658Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/459
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.330Z
'
,
updated_at
:
'
2018-05-18T15:32:55.330Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
null
,
group
:
'
success
'
,
tooltip
:
null
,
has_details
:
false
,
details_path
:
null
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
},
],
},
{
name
:
'
rspec:linux
'
,
size
:
3
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
false
,
details_path
:
null
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
jobs
:
[
{
id
:
445
,
name
:
'
rspec:linux 0 3
'
,
started
:
'
2018-05-18T07:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/445
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/445/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.425Z
'
,
updated_at
:
'
2018-05-18T15:32:54.425Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/445
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/445/retry
'
,
method
:
'
post
'
,
},
},
},
{
id
:
446
,
name
:
'
rspec:linux 1 3
'
,
started
:
'
2018-05-18T07:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/446
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/446/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.506Z
'
,
updated_at
:
'
2018-05-18T15:32:54.506Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/446
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/446/retry
'
,
method
:
'
post
'
,
},
},
},
{
id
:
447
,
name
:
'
rspec:linux 2 3
'
,
started
:
'
2018-05-18T07:32:20.656Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/447
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/447/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.572Z
'
,
updated_at
:
'
2018-05-18T15:32:54.572Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/447
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/447/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
rspec:osx
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/452
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/452/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
452
,
name
:
'
rspec:osx
'
,
started
:
'
2018-05-18T07:32:20.657Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/452
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/452/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.920Z
'
,
updated_at
:
'
2018-05-18T15:32:54.920Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/452
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/452/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
rspec:windows
'
,
size
:
3
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
false
,
details_path
:
null
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
jobs
:
[
{
id
:
448
,
name
:
'
rspec:windows 0 3
'
,
started
:
'
2018-05-18T07:32:20.656Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/448
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/448/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.639Z
'
,
updated_at
:
'
2018-05-18T15:32:54.639Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/448
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/448/retry
'
,
method
:
'
post
'
,
},
},
},
{
id
:
449
,
name
:
'
rspec:windows 1 3
'
,
started
:
'
2018-05-18T07:32:20.656Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/449
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/449/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.703Z
'
,
updated_at
:
'
2018-05-18T15:32:54.703Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/449
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/449/retry
'
,
method
:
'
post
'
,
},
},
},
{
id
:
451
,
name
:
'
rspec:windows 2 3
'
,
started
:
'
2018-05-18T07:32:20.657Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/451
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/451/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.853Z
'
,
updated_at
:
'
2018-05-18T15:32:54.853Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/451
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/451/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
spinach:linux
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/453
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/453/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
453
,
name
:
'
spinach:linux
'
,
started
:
'
2018-05-18T07:32:20.657Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/453
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/453/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.993Z
'
,
updated_at
:
'
2018-05-18T15:32:54.993Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/453
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/453/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
spinach:osx
'
,
size
:
1
,
status
:
{
icon
:
'
status_warning
'
,
text
:
'
failed
'
,
label
:
'
failed (allowed to fail)
'
,
group
:
'
failed-with-warnings
'
,
tooltip
:
'
failed - (unknown failure) (allowed to fail)
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/454
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/454/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
454
,
name
:
'
spinach:osx
'
,
started
:
'
2018-05-18T07:32:20.657Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/454
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/454/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.053Z
'
,
updated_at
:
'
2018-05-18T15:32:55.053Z
'
,
status
:
{
icon
:
'
status_warning
'
,
text
:
'
failed
'
,
label
:
'
failed (allowed to fail)
'
,
group
:
'
failed-with-warnings
'
,
tooltip
:
'
failed - (unknown failure) (allowed to fail)
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/454
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/454/retry
'
,
method
:
'
post
'
,
},
},
callout_message
:
'
There is an unknown failure, please try again
'
,
recoverable
:
true
,
},
],
},
],
status
:
{
icon
:
'
status_warning
'
,
text
:
'
passed
'
,
label
:
'
passed with warnings
'
,
group
:
'
success-with-warnings
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#test
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#test
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=test
'
,
},
{
name
:
'
deploy
'
,
title
:
'
deploy: running
'
,
groups
:
[
{
name
:
'
production
'
,
size
:
1
,
status
:
{
icon
:
'
status_created
'
,
text
:
'
created
'
,
label
:
'
created
'
,
group
:
'
created
'
,
tooltip
:
'
created
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/457
'
,
illustration
:
{
image
:
'
illustrations/job_not_triggered.svg
'
,
size
:
'
svg-306
'
,
title
:
'
This job has not been triggered yet
'
,
content
:
'
This job depends on upstream jobs that need to succeed in order for this job to be triggered
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/457/cancel
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
457
,
name
:
'
production
'
,
started
:
false
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/457
'
,
cancel_path
:
'
/gitlab-org/gitlab-shell/-/jobs/457/cancel
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.259Z
'
,
updated_at
:
'
2018-09-28T11:09:57.454Z
'
,
status
:
{
icon
:
'
status_created
'
,
text
:
'
created
'
,
label
:
'
created
'
,
group
:
'
created
'
,
tooltip
:
'
created
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/457
'
,
illustration
:
{
image
:
'
illustrations/job_not_triggered.svg
'
,
size
:
'
svg-306
'
,
title
:
'
This job has not been triggered yet
'
,
content
:
'
This job depends on upstream jobs that need to succeed in order for this job to be triggered
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/457/cancel
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
staging
'
,
size
:
1
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/455
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/455/retry
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
455
,
name
:
'
staging
'
,
started
:
'
2018-05-18T09:32:20.658Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/455
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/455/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.119Z
'
,
updated_at
:
'
2018-05-18T15:32:55.119Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/455
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/455/retry
'
,
method
:
'
post
'
,
},
},
},
],
},
{
name
:
'
stop staging
'
,
size
:
1
,
status
:
{
icon
:
'
status_created
'
,
text
:
'
created
'
,
label
:
'
created
'
,
group
:
'
created
'
,
tooltip
:
'
created
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/456
'
,
illustration
:
{
image
:
'
illustrations/job_not_triggered.svg
'
,
size
:
'
svg-306
'
,
title
:
'
This job has not been triggered yet
'
,
content
:
'
This job depends on upstream jobs that need to succeed in order for this job to be triggered
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/456/cancel
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
456
,
name
:
'
stop staging
'
,
started
:
false
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/456
'
,
cancel_path
:
'
/gitlab-org/gitlab-shell/-/jobs/456/cancel
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:55.205Z
'
,
updated_at
:
'
2018-09-28T11:09:57.396Z
'
,
status
:
{
icon
:
'
status_created
'
,
text
:
'
created
'
,
label
:
'
created
'
,
group
:
'
created
'
,
tooltip
:
'
created
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/456
'
,
illustration
:
{
image
:
'
illustrations/job_not_triggered.svg
'
,
size
:
'
svg-306
'
,
title
:
'
This job has not been triggered yet
'
,
content
:
'
This job depends on upstream jobs that need to succeed in order for this job to be triggered
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_created-4b975aa976d24e5a3ea7cd9a5713e6ce2cd9afd08b910415e96675de35f64955.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/456/cancel
'
,
method
:
'
post
'
,
},
},
},
],
},
],
status
:
{
icon
:
'
status_running
'
,
text
:
'
running
'
,
label
:
'
running
'
,
group
:
'
running
'
,
tooltip
:
'
running
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#deploy
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_running-9c635b2419a8e1ec991c993061b89cc5aefc0743bb238ecd0c381e7741a70e8c.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#deploy
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=deploy
'
,
},
{
name
:
'
notify
'
,
title
:
'
notify: manual action
'
,
groups
:
[
{
name
:
'
slack
'
,
size
:
1
,
status
:
{
icon
:
'
status_manual
'
,
text
:
'
manual
'
,
label
:
'
manual play action
'
,
group
:
'
manual
'
,
tooltip
:
'
manual action
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/458
'
,
illustration
:
{
image
:
'
illustrations/manual_action.svg
'
,
size
:
'
svg-394
'
,
title
:
'
This job requires a manual action
'
,
content
:
'
This job depends on a user to trigger its process. Often they are used to deploy code to production environments
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png
'
,
action
:
{
icon
:
'
play
'
,
title
:
'
Play
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/458/play
'
,
method
:
'
post
'
,
},
},
jobs
:
[
{
id
:
458
,
name
:
'
slack
'
,
started
:
null
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/458
'
,
play_path
:
'
/gitlab-org/gitlab-shell/-/jobs/458/play
'
,
playable
:
true
,
created_at
:
'
2018-05-18T15:32:55.303Z
'
,
updated_at
:
'
2018-05-18T15:34:08.535Z
'
,
status
:
{
icon
:
'
status_manual
'
,
text
:
'
manual
'
,
label
:
'
manual play action
'
,
group
:
'
manual
'
,
tooltip
:
'
manual action
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/458
'
,
illustration
:
{
image
:
'
illustrations/manual_action.svg
'
,
size
:
'
svg-394
'
,
title
:
'
This job requires a manual action
'
,
content
:
'
This job depends on a user to trigger its process. Often they are used to deploy code to production environments
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png
'
,
action
:
{
icon
:
'
play
'
,
title
:
'
Play
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/458/play
'
,
method
:
'
post
'
,
},
},
},
],
},
],
status
:
{
icon
:
'
status_manual
'
,
text
:
'
manual
'
,
label
:
'
manual action
'
,
group
:
'
manual
'
,
tooltip
:
'
manual action
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#notify
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_manual-829a0804612cef47d9efc1618dba38325483657c847dba0546c3b9f0295bb36c.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#notify
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=notify
'
,
},
];
export
default
{
id
:
4757
,
name
:
'
test
'
,
build_path
:
'
/root/ci-mock/-/jobs/4757
'
,
retry_path
:
'
/root/ci-mock/-/jobs/4757/retry
'
,
cancel_path
:
'
/root/ci-mock/-/jobs/4757/cancel
'
,
new_issue_path
:
'
/root/ci-mock/issues/new
'
,
playable
:
false
,
created_at
:
threeWeeksAgo
.
toISOString
(),
updated_at
:
threeWeeksAgo
.
toISOString
(),
finished_at
:
threeWeeksAgo
.
toISOString
(),
queued
:
9.54
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
has_details
:
true
,
details_path
:
`
${
TEST_HOST
}
/root/ci-mock/-/jobs/4757`
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/root/ci-mock/-/jobs/4757/retry
'
,
method
:
'
post
'
,
},
},
coverage
:
20
,
erased_at
:
threeWeeksAgo
.
toISOString
(),
erased
:
false
,
duration
:
6.785563
,
tags
:
[
'
tag
'
],
user
:
{
name
:
'
Root
'
,
username
:
'
root
'
,
id
:
1
,
state
:
'
active
'
,
avatar_url
:
'
https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80
\
u0026d=identicon
'
,
web_url
:
'
http://localhost:3000/root
'
,
},
erase_path
:
'
/root/ci-mock/-/jobs/4757/erase
'
,
artifacts
:
[
null
],
runner
:
{
id
:
1
,
description
:
'
local ci runner
'
,
edit_path
:
'
/root/ci-mock/runners/1/edit
'
,
},
pipeline
:
{
id
:
140
,
user
:
{
name
:
'
Root
'
,
username
:
'
root
'
,
id
:
1
,
state
:
'
active
'
,
avatar_url
:
'
https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80
\
u0026d=identicon
'
,
web_url
:
'
http://localhost:3000/root
'
,
},
active
:
false
,
coverage
:
null
,
source
:
'
unknown
'
,
created_at
:
'
2017-05-24T09:59:58.634Z
'
,
updated_at
:
'
2017-06-01T17:32:00.062Z
'
,
path
:
'
/root/ci-mock/pipelines/140
'
,
flags
:
{
latest
:
true
,
stuck
:
false
,
yaml_errors
:
false
,
retryable
:
false
,
cancelable
:
false
,
},
details
:
{
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
has_details
:
true
,
details_path
:
'
/root/ci-mock/pipelines/140
'
,
favicon
:
'
/assets/ci_favicons/favicon_status_success-308b4fc054cdd1b68d0865e6cfb7b02e92e3472f201507418f8eddb74ac11a59.png
'
,
},
duration
:
6
,
finished_at
:
'
2017-06-01T17:32:00.042Z
'
,
stages
:
[
{
dropdown_path
:
'
/jashkenas/underscore/pipelines/16/stage.json?stage=build
'
,
name
:
'
build
'
,
path
:
'
/jashkenas/underscore/pipelines/16#build
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
},
title
:
'
build: passed
'
,
},
{
dropdown_path
:
'
/jashkenas/underscore/pipelines/16/stage.json?stage=test
'
,
name
:
'
test
'
,
path
:
'
/jashkenas/underscore/pipelines/16#test
'
,
status
:
{
icon
:
'
status_warning
'
,
text
:
'
passed
'
,
label
:
'
passed with warnings
'
,
group
:
'
success-with-warnings
'
,
},
title
:
'
test: passed with warnings
'
,
},
],
},
ref
:
{
name
:
'
abc
'
,
path
:
'
/root/ci-mock/commits/abc
'
,
tag
:
false
,
branch
:
true
,
},
commit
:
{
id
:
'
c58647773a6b5faf066d4ad6ff2c9fbba5f180f6
'
,
short_id
:
'
c5864777
'
,
title
:
'
Add new file
'
,
created_at
:
'
2017-05-24T10:59:52.000+01:00
'
,
parent_ids
:
[
'
798e5f902592192afaba73f4668ae30e56eae492
'
],
message
:
'
Add new file
'
,
author_name
:
'
Root
'
,
author_email
:
'
admin@example.com
'
,
authored_date
:
'
2017-05-24T10:59:52.000+01:00
'
,
committer_name
:
'
Root
'
,
committer_email
:
'
admin@example.com
'
,
committed_date
:
'
2017-05-24T10:59:52.000+01:00
'
,
author
:
{
name
:
'
Root
'
,
username
:
'
root
'
,
id
:
1
,
state
:
'
active
'
,
avatar_url
:
'
https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80
\
u0026d=identicon
'
,
web_url
:
'
http://localhost:3000/root
'
,
},
author_gravatar_url
:
'
https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80
\
u0026d=identicon
'
,
commit_url
:
'
http://localhost:3000/root/ci-mock/commit/c58647773a6b5faf066d4ad6ff2c9fbba5f180f6
'
,
commit_path
:
'
/root/ci-mock/commit/c58647773a6b5faf066d4ad6ff2c9fbba5f180f6
'
,
},
},
metadata
:
{
timeout_human_readable
:
'
1m 40s
'
,
timeout_source
:
'
runner
'
,
},
merge_request
:
{
iid
:
2
,
path
:
'
/root/ci-mock/merge_requests/2
'
,
},
raw_path
:
'
/root/ci-mock/builds/4757/raw
'
,
has_trace
:
true
,
};
export
const
jobsInStage
=
{
name
:
'
build
'
,
title
:
'
build: running
'
,
latest_statuses
:
[
{
id
:
1180
,
name
:
'
build:linux
'
,
started
:
false
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
cancel_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
playable
:
false
,
created_at
:
'
2018-09-28T11:09:57.229Z
'
,
updated_at
:
'
2018-09-28T11:09:57.503Z
'
,
status
:
{
icon
:
'
status_pending
'
,
text
:
'
pending
'
,
label
:
'
pending
'
,
group
:
'
pending
'
,
tooltip
:
'
pending
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180
'
,
illustration
:
{
image
:
'
illustrations/pending_job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job has not started yet
'
,
content
:
'
This job is in pending state and is waiting to be picked by a runner
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_pending-5bdf338420e5221ca24353b6bff1c9367189588750632e9a871b7af09ff6a2ae.png
'
,
action
:
{
icon
:
'
cancel
'
,
title
:
'
Cancel
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/1180/cancel
'
,
method
:
'
post
'
,
},
},
},
{
id
:
444
,
name
:
'
build:osx
'
,
started
:
'
2018-05-18T05:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.364Z
'
,
updated_at
:
'
2018-05-18T15:32:54.364Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/444
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/444/retry
'
,
method
:
'
post
'
,
},
},
},
],
retried
:
[
{
id
:
443
,
name
:
'
build:linux
'
,
started
:
'
2018-05-18T06:32:20.655Z
'
,
build_path
:
'
/gitlab-org/gitlab-shell/-/jobs/443
'
,
retry_path
:
'
/gitlab-org/gitlab-shell/-/jobs/443/retry
'
,
playable
:
false
,
created_at
:
'
2018-05-18T15:32:54.296Z
'
,
updated_at
:
'
2018-05-18T15:32:54.296Z
'
,
status
:
{
icon
:
'
status_success
'
,
text
:
'
passed
'
,
label
:
'
passed
'
,
group
:
'
success
'
,
tooltip
:
'
passed (retried)
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/-/jobs/443
'
,
illustration
:
{
image
:
'
illustrations/skipped-job_empty.svg
'
,
size
:
'
svg-430
'
,
title
:
'
This job does not have a trace.
'
,
},
favicon
:
'
/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png
'
,
action
:
{
icon
:
'
retry
'
,
title
:
'
Retry
'
,
path
:
'
/gitlab-org/gitlab-shell/-/jobs/443/retry
'
,
method
:
'
post
'
,
},
},
},
],
status
:
{
icon
:
'
status_running
'
,
text
:
'
running
'
,
label
:
'
running
'
,
group
:
'
running
'
,
tooltip
:
'
running
'
,
has_details
:
true
,
details_path
:
'
/gitlab-org/gitlab-shell/pipelines/27#build
'
,
illustration
:
null
,
favicon
:
'
/assets/ci_favicons/favicon_status_running-9c635b2419a8e1ec991c993061b89cc5aefc0743bb238ecd0c381e7741a70e8c.png
'
,
},
path
:
'
/gitlab-org/gitlab-shell/pipelines/27#build
'
,
dropdown_path
:
'
/gitlab-org/gitlab-shell/pipelines/27/stage.json?stage=build
'
,
};
export
{
default
}
from
'
../../frontend/jobs/mock_data
'
;
export
*
from
'
../../frontend/jobs/mock_data
'
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment