diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-05 21:09:06 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-05 21:09:06 +0300 |
commit | b042382bbf5a4977c5b5c6b0a9a33f4e8ca8d16d (patch) | |
tree | de31671ab7c6ca8c2a3721cbabd1f2a42b3d0194 /spec/javascripts | |
parent | eabf8fd774fef6a54903e5141138f47bdafeb331 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/javascripts')
-rw-r--r-- | spec/javascripts/jobs/components/job_app_spec.js | 593 | ||||
-rw-r--r-- | spec/javascripts/jobs/mock_data.js | 1193 |
2 files changed, 2 insertions, 1784 deletions
diff --git a/spec/javascripts/jobs/components/job_app_spec.js b/spec/javascripts/jobs/components/job_app_spec.js deleted file mode 100644 index 31b49c45908..00000000000 --- a/spec/javascripts/jobs/components/job_app_spec.js +++ /dev/null @@ -1,593 +0,0 @@ -import Vue from 'vue'; -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 axios from '~/lib/utils/axios_utils'; -import jobApp 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 ', () => { - const delayedJobFixture = getJSONFixture('jobs/delayed.json'); - const Component = Vue.extend(jobApp); - let store; - let vm; - let mock; - - const initSettings = { - endpoint: `${gl.TEST_HOST}jobs/123.json`, - pagePath: `${gl.TEST_HOST}jobs/123`, - logState: - 'eyJvZmZzZXQiOjE3NDUxLCJuX29wZW5fdGFncyI6MCwiZmdfY29sb3IiOm51bGwsImJnX2NvbG9yIjpudWxsLCJzdHlsZV9tYXNrIjowfQ%3D%3D', - }; - - const props = { - runnerHelpUrl: 'help/runner', - deploymentHelpUrl: 'help/deployment', - runnerSettingsUrl: 'settings/ci-cd/runners', - variablesSettingsUrl: 'settings/ci-cd/variables', - terminalPath: 'jobs/123/terminal', - projectPath: 'user-name/project-name', - subscriptionsMoreMinutesUrl: 'https://customers.gitlab.com/buy_pipeline_minutes', - }; - - const waitForJobReceived = () => waitForMutation(store, types.RECEIVE_JOB_SUCCESS); - 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); - - vm = mountComponentWithStore(Component, { props, store }); - - return waitForJobReceived(); - }; - - beforeEach(() => { - mock = new MockAdapter(axios); - store = createStore(); - }); - - afterEach(() => { - vm.$destroy(); - mock.restore(); - }); - - describe('while loading', () => { - beforeEach(() => { - setupAndMount(); - }); - - 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(); - }); - }); - - 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 render the reason when reason is present', done => { - setupAndMount({ - jobData: { - callout_message: 'There is an unkown failure, please try again', - }, - }) - .then(() => { - expect(vm.shouldRenderCalloutMessage).toBe(true); - }) - .then(done) - .catch(done.fail); - }); - }); - - describe('triggered job', () => { - beforeEach(done => { - const aYearAgo = new Date(); - aYearAgo.setFullYear(aYearAgo.getFullYear() - 1); - - setupAndMount({ jobData: { started: aYearAgo.toISOString() } }) - .then(done) - .catch(done.fail); - }); - - it('should render provided job information', () => { - expect( - vm.$el - .querySelector('.header-main-content') - .textContent.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, - ); - }); - }); - - describe('created job', () => { - it('should render created key', done => { - setupAndMount() - .then(() => { - expect( - vm.$el - .querySelector('.header-main-content') - .textContent.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 => { - setupAndMount({ - jobData: { - status: { - group: 'pending', - icon: 'status_pending', - label: 'pending', - text: 'pending', - details_path: 'path', - }, - stuck: true, - runners: { - available: false, - online: false, - }, - 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); - }); - }); - - describe('when available runners can not run specified tag', () => { - it('renders tags in stuck block when there are no runners', done => { - setupAndMount({ - jobData: { - status: { - group: 'pending', - icon: 'status_pending', - label: 'pending', - text: 'pending', - details_path: 'path', - }, - stuck: true, - runners: { - available: false, - 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); - }); - }); - - 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 => { - setupAndMount({ - jobData: { - status: { - group: 'pending', - icon: 'status_pending', - label: 'pending', - text: 'pending', - details_path: 'path', - }, - stuck: true, - runners: { - available: true, - 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); - }); - }); - - it('does not renders stuck block when there are no runners', done => { - setupAndMount({ - jobData: { - runners: { available: true }, - }, - }) - .then(() => { - expect(vm.$el.querySelector('.js-job-stuck')).toBeNull(); - }) - .then(done) - .catch(done.fail); - }); - }); - - describe('unmet prerequisites block', () => { - it('renders unmet prerequisites block when there is an unmet prerequisites failure', done => { - setupAndMount({ - jobData: { - status: { - group: 'failed', - icon: 'status_failed', - label: 'failed', - text: 'failed', - details_path: 'path', - illustration: { - content: 'Retry this job in order to create the necessary resources.', - image: 'path', - size: 'svg-430', - title: 'Failed to create resources', - }, - }, - failure_reason: 'unmet_prerequisites', - has_trace: false, - runners: { - available: true, - }, - tags: [], - }, - }) - .then(() => { - expect(vm.$el.querySelector('.js-job-failed')).not.toBeNull(); - }) - .then(done) - .catch(done.fail); - }); - }); - - describe('environments block', () => { - it('renders environment block when job has environment', done => { - setupAndMount({ - jobData: { - deployment_status: { - environment: { - environment_path: '/path', - name: 'foo', - }, - }, - }, - }) - .then(() => { - expect(vm.$el.querySelector('.js-job-environment')).not.toBeNull(); - }) - .then(done) - .catch(done.fail); - }); - - 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); - }); - }); - - describe('erased block', () => { - it('renders erased block when `erased` is true', done => { - setupAndMount({ - jobData: { - erased_by: { - username: 'root', - web_url: 'gitlab.com/root', - }, - erased_at: '2016-11-07T11:11:16.525Z', - }, - }) - .then(() => { - expect(vm.$el.querySelector('.js-job-erased-block')).not.toBeNull(); - }) - .then(done) - .catch(done.fail); - }); - - it('does not render erased block when `erased` is false', done => { - setupAndMount({ - jobData: { - erased_at: null, - }, - }) - .then(() => { - expect(vm.$el.querySelector('.js-job-erased-block')).toBeNull(); - }) - .then(done) - .catch(done.fail); - }); - }); - - describe('empty states block', () => { - it('renders empty state when job does not have trace and is not running', done => { - setupAndMount({ - jobData: { - has_trace: false, - status: { - group: 'pending', - icon: 'status_pending', - label: 'pending', - text: 'pending', - details_path: 'path', - illustration: { - image: 'path', - size: '340', - title: 'Empty State', - content: 'This is an empty state', - }, - action: { - button_title: 'Retry job', - method: 'post', - path: '/path', - }, - }, - }, - }) - .then(() => { - expect(vm.$el.querySelector('.js-job-empty-state')).not.toBeNull(); - }) - .then(done) - .catch(done.fail); - }); - - it('does not render empty state when job does not have trace but it is running', done => { - setupAndMount({ - jobData: { - has_trace: false, - status: { - group: 'running', - icon: 'status_running', - label: 'running', - text: 'running', - details_path: 'path', - }, - }, - }) - .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', done => { - setupAndMount({ jobData: { has_trace: true } }) - .then(() => { - expect(vm.$el.querySelector('.js-job-empty-state')).toBeNull(); - }) - .then(done) - .catch(done.fail); - }); - - it('displays remaining time for a delayed job', done => { - const oneHourInMilliseconds = 3600000; - spyOn(Date, 'now').and.callFake( - () => new Date(delayedJobFixture.scheduled_at).getTime() - oneHourInMilliseconds, - ); - setupAndMount({ jobData: delayedJobFixture }) - .then(() => { - expect(vm.$el.querySelector('.js-job-empty-state')).not.toBeNull(); - - const title = vm.$el.querySelector('.js-job-empty-state-title'); - - expect(title).toContainText('01:00:00'); - }) - .then(done) - .catch(done.fail); - }); - }); - - describe('sidebar', () => { - it('has no blank blocks', done => { - setupAndMount({ - jobData: { - duration: null, - finished_at: null, - erased_at: null, - queued: null, - runner: null, - coverage: null, - tags: [], - cancel_path: null, - }, - }) - .then(() => { - vm.$el.querySelectorAll('.blocks-container > *').forEach(block => { - expect(block.textContent.trim()).not.toBe(''); - }); - }) - .then(done) - .catch(done.fail); - }); - }); - }); - - describe('archived job', () => { - beforeEach(done => { - setupAndMount({ jobData: { archived: true } }) - .then(done) - .catch(done.fail); - }); - - it('renders warning about job being archived', () => { - expect(vm.$el.querySelector('.js-archived-job ')).not.toBeNull(); - }); - }); - - describe('non-archived job', () => { - beforeEach(done => { - setupAndMount() - .then(done) - .catch(done.fail); - }); - - it('does not warning about job being archived', () => { - expect(vm.$el.querySelector('.js-archived-job ')).toBeNull(); - }); - }); - - describe('trace output', () => { - describe('with append flag', () => { - it('appends the log content to the existing one', done => { - setupAndMount({ - traceData: { - html: '<span>More<span>', - status: 'running', - state: 'newstate', - append: true, - complete: true, - }, - }) - .then(() => { - vm.$store.state.trace = 'Update'; - - return vm.$nextTick(); - }) - .then(() => { - expect(vm.$el.querySelector('.js-build-trace').textContent.trim()).toContain('Update'); - }) - .then(done) - .catch(done.fail); - }); - }); - - describe('without append flag', () => { - it('replaces the trace', done => { - setupAndMount({ - traceData: { - html: '<span>Different<span>', - status: 'running', - 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); - }); - }); - - describe('truncated information', () => { - describe('when size is less than total', () => { - it('shows information about truncated log', done => { - mock.onGet(`${props.pagePath}/trace.json`).reply(200, { - html: '<span>Update</span>', - status: 'success', - append: false, - size: 50, - total: 100, - complete: true, - }); - - setupAndMount({ - traceData: { - html: '<span>Update</span>', - status: 'success', - append: false, - size: 50, - total: 100, - complete: true, - }, - }) - .then(() => { - expect(vm.$el.querySelector('.js-truncated-info').textContent.trim()).toContain( - '50 bytes', - ); - }) - .then(done) - .catch(done.fail); - }); - }); - - describe('when size is equal than total', () => { - it('does not show the truncated information', done => { - setupAndMount({ - traceData: { - html: '<span>Update</span>', - status: 'success', - append: false, - size: 100, - total: 100, - complete: true, - }, - }) - .then(() => { - expect(vm.$el.querySelector('.js-truncated-info').textContent.trim()).not.toContain( - '50 bytes', - ); - }) - .then(done) - .catch(done.fail); - }); - }); - }); - - describe('trace controls', () => { - beforeEach(done => { - setupAndMount({ - traceData: { - html: '<span>Update</span>', - status: 'success', - append: false, - size: 50, - 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(); - }); - - it('should render link to raw ouput', () => { - expect(vm.$el.querySelector('.js-raw-link-controller')).not.toBeNull(); - }); - - it('should render link to erase job', () => { - expect(vm.$el.querySelector('.js-erase-link')).not.toBeNull(); - }); - }); - }); -}); diff --git a/spec/javascripts/jobs/mock_data.js b/spec/javascripts/jobs/mock_data.js index 3d40e94d219..f0ba46c058a 100644 --- a/spec/javascripts/jobs/mock_data.js +++ b/spec/javascripts/jobs/mock_data.js @@ -1,1191 +1,2 @@ -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'; |