summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/jobs
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-08-20 18:42:06 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-08-20 18:42:06 +0000
commit6e4e1050d9dba2b7b2523fdd1768823ab85feef4 (patch)
tree78be5963ec075d80116a932011d695dd33910b4e /app/assets/javascripts/jobs
parent1ce776de4ae122aba3f349c02c17cebeaa8ecf07 (diff)
downloadgitlab-ce-6e4e1050d9dba2b7b2523fdd1768823ab85feef4.tar.gz
Add latest changes from gitlab-org/gitlab@13-3-stable-ee
Diffstat (limited to 'app/assets/javascripts/jobs')
-rw-r--r--app/assets/javascripts/jobs/components/artifacts_block.vue2
-rw-r--r--app/assets/javascripts/jobs/components/empty_state.vue7
-rw-r--r--app/assets/javascripts/jobs/components/environments_block.vue2
-rw-r--r--app/assets/javascripts/jobs/components/job_app.vue22
-rw-r--r--app/assets/javascripts/jobs/components/job_log_controllers.vue15
-rw-r--r--app/assets/javascripts/jobs/components/manual_variables_form.vue2
-rw-r--r--app/assets/javascripts/jobs/components/sidebar.vue3
-rw-r--r--app/assets/javascripts/jobs/components/stuck_block.vue68
-rw-r--r--app/assets/javascripts/jobs/store/actions.js5
-rw-r--r--app/assets/javascripts/jobs/store/getters.js3
10 files changed, 70 insertions, 59 deletions
diff --git a/app/assets/javascripts/jobs/components/artifacts_block.vue b/app/assets/javascripts/jobs/components/artifacts_block.vue
index b2f9bf2a348..6183779acd4 100644
--- a/app/assets/javascripts/jobs/components/artifacts_block.vue
+++ b/app/assets/javascripts/jobs/components/artifacts_block.vue
@@ -48,7 +48,7 @@ export default {
)
}}</span>
</p>
- <div class="btn-group d-flex prepend-top-10" role="group">
+ <div class="btn-group d-flex gl-mt-3" role="group">
<gl-link
v-if="artifact.keep_path"
:href="artifact.keep_path"
diff --git a/app/assets/javascripts/jobs/components/empty_state.vue b/app/assets/javascripts/jobs/components/empty_state.vue
index e2bc413e3ce..0ee8cd6c5ad 100644
--- a/app/assets/javascripts/jobs/components/empty_state.vue
+++ b/app/assets/javascripts/jobs/components/empty_state.vue
@@ -71,9 +71,9 @@ export default {
<div class="col-12">
<div class="text-content">
- <h4 class="js-job-empty-state-title text-center">{{ title }}</h4>
+ <h4 class="text-center" data-testid="job-empty-state-title">{{ title }}</h4>
- <p v-if="content" class="js-job-empty-state-content">{{ content }}</p>
+ <p v-if="content" data-testid="job-empty-state-content">{{ content }}</p>
</div>
<manual-variables-form
v-if="shouldRenderManualVariables"
@@ -85,7 +85,8 @@ export default {
<gl-link
:href="action.path"
:data-method="action.method"
- class="js-job-empty-state-action btn btn-primary"
+ class="btn btn-primary"
+ data-testid="job-empty-state-action"
>{{ action.button_title }}</gl-link
>
</div>
diff --git a/app/assets/javascripts/jobs/components/environments_block.vue b/app/assets/javascripts/jobs/components/environments_block.vue
index 9166c13a4fb..ec7868d9235 100644
--- a/app/assets/javascripts/jobs/components/environments_block.vue
+++ b/app/assets/javascripts/jobs/components/environments_block.vue
@@ -1,8 +1,8 @@
<script>
import { isEmpty } from 'lodash';
+import { GlSprintf, GlLink } from '@gitlab/ui';
import CiIcon from '~/vue_shared/components/ci_icon.vue';
import { __ } from '../../locale';
-import { GlSprintf, GlLink } from '@gitlab/ui';
export default {
creatingEnvironment: 'creating',
diff --git a/app/assets/javascripts/jobs/components/job_app.vue b/app/assets/javascripts/jobs/components/job_app.vue
index f43a058b5f8..e760706c97e 100644
--- a/app/assets/javascripts/jobs/components/job_app.vue
+++ b/app/assets/javascripts/jobs/components/job_app.vue
@@ -198,17 +198,13 @@ export default {
</script>
<template>
<div>
- <gl-loading-icon
- v-if="isLoading"
- size="lg"
- class="js-job-loading qa-loading-animation prepend-top-20"
- />
+ <gl-loading-icon v-if="isLoading" size="lg" class="qa-loading-animation prepend-top-20" />
<template v-else-if="shouldRenderContent">
- <div class="js-job-content build-page">
+ <div class="build-page" data-testid="job-content">
<!-- Header Section -->
<header>
- <div class="js-build-header build-header top-area">
+ <div class="build-header top-area">
<ci-header
:status="job.status"
:item-id="job.id"
@@ -230,7 +226,6 @@ export default {
<!-- Body Section -->
<stuck-block
v-if="job.stuck"
- class="js-job-stuck"
:has-no-runners-for-project="hasRunnersForProject"
:tags="job.tags"
:runners-path="runnerSettingsUrl"
@@ -238,13 +233,11 @@ export default {
<unmet-prerequisites-block
v-if="hasUnmetPrerequisitesFailure"
- class="js-job-failed"
:help-path="deploymentHelpUrl"
/>
<shared-runner
v-if="shouldRenderSharedRunnerLimitWarning"
- class="js-shared-runner-limit"
:quota-used="job.runners.quota.used"
:quota-limit="job.runners.quota.limit"
:runners-path="runnerHelpUrl"
@@ -254,7 +247,6 @@ export default {
<environments-block
v-if="hasEnvironment"
- class="js-job-environment"
:deployment-status="job.deployment_status"
:deployment-cluster="job.deployment_cluster"
:icon-status="job.status"
@@ -262,7 +254,7 @@ export default {
<erased-block
v-if="job.erased_at"
- class="js-job-erased-block"
+ data-testid="job-erased-block"
:user="job.erased_by"
:erased-at="job.erased_at"
/>
@@ -270,8 +262,9 @@ export default {
<div
v-if="job.archived"
ref="sticky"
- class="js-archived-job gl-mt-3 archived-job"
+ class="gl-mt-3 archived-job"
:class="{ 'sticky-top border-bottom-0': hasTrace }"
+ data-testid="archived-job"
>
<icon name="lock" class="align-text-bottom" />
{{ __('This job is archived. Only the complete pipeline can be retried.') }}
@@ -305,7 +298,6 @@ export default {
<!-- empty state -->
<empty-state
v-if="!hasTrace"
- class="js-job-empty-state"
:illustration-path="emptyStateIllustration.image"
:illustration-size-class="emptyStateIllustration.size"
:title="emptyStateTitle"
@@ -323,12 +315,12 @@ export default {
<sidebar
v-if="shouldRenderContent"
- class="js-job-sidebar"
:class="{
'right-sidebar-expanded': isSidebarOpen,
'right-sidebar-collapsed': !isSidebarOpen,
}"
:runner-help-url="runnerHelpUrl"
+ data-testid="job-sidebar"
/>
</div>
</template>
diff --git a/app/assets/javascripts/jobs/components/job_log_controllers.vue b/app/assets/javascripts/jobs/components/job_log_controllers.vue
index a68174d8e1d..4d314eaa106 100644
--- a/app/assets/javascripts/jobs/components/job_log_controllers.vue
+++ b/app/assets/javascripts/jobs/components/job_log_controllers.vue
@@ -71,13 +71,14 @@ export default {
<template>
<div class="top-bar">
<!-- truncate information -->
- <div class="js-truncated-info truncated-info d-none d-sm-block float-left">
+ <div class="truncated-info d-none d-sm-block float-left" data-testid="log-truncated-info">
<template v-if="isTraceSizeVisible">
{{ jobLogSize }}
<gl-link
v-if="rawPath"
:href="rawPath"
- class="js-raw-link text-plain text-underline gl-ml-2"
+ class="text-plain text-underline gl-ml-2"
+ data-testid="raw-link"
>{{ s__('Job|Complete Raw') }}</gl-link
>
</template>
@@ -91,7 +92,8 @@ export default {
v-gl-tooltip.body
:title="s__('Job|Show complete raw')"
:href="rawPath"
- class="js-raw-link-controller controllers-buttons"
+ class="controllers-buttons"
+ data-testid="job-raw-link-controller"
>
<icon name="doc-text" />
</gl-link>
@@ -102,7 +104,8 @@ export default {
:title="s__('Job|Erase job log')"
:href="erasePath"
:data-confirm="__('Are you sure you want to erase this build?')"
- class="js-erase-link controllers-buttons"
+ class="controllers-buttons"
+ data-testid="job-log-erase-link"
data-method="post"
>
<icon name="remove" />
@@ -114,7 +117,8 @@ export default {
<gl-deprecated-button
:disabled="isScrollTopDisabled"
type="button"
- class="js-scroll-top btn-scroll btn-transparent btn-blank"
+ class="btn-scroll btn-transparent btn-blank"
+ data-testid="job-controller-scroll-top"
@click="handleScrollToTop"
>
<icon name="scroll_up" />
@@ -126,6 +130,7 @@ export default {
:disabled="isScrollBottomDisabled"
class="js-scroll-bottom btn-scroll btn-transparent btn-blank"
:class="{ animate: isScrollingDown }"
+ data-testid="job-controller-scroll-bottom"
@click="handleScrollToBottom"
v-html="$options.scrollDown"
/>
diff --git a/app/assets/javascripts/jobs/components/manual_variables_form.vue b/app/assets/javascripts/jobs/components/manual_variables_form.vue
index d83c598dd48..9236624a191 100644
--- a/app/assets/javascripts/jobs/components/manual_variables_form.vue
+++ b/app/assets/javascripts/jobs/components/manual_variables_form.vue
@@ -100,7 +100,7 @@ export default {
};
</script>
<template>
- <div class="js-manual-vars-form col-12">
+ <div class="col-12" data-testid="manual-vars-form">
<label>{{ s__('CiVariables|Variables') }}</label>
<div class="ci-table">
diff --git a/app/assets/javascripts/jobs/components/sidebar.vue b/app/assets/javascripts/jobs/components/sidebar.vue
index 83ba528cfa2..517da16dcf8 100644
--- a/app/assets/javascripts/jobs/components/sidebar.vue
+++ b/app/assets/javascripts/jobs/components/sidebar.vue
@@ -147,7 +147,8 @@ export default {
<gl-link
v-if="job.new_issue_path"
:href="job.new_issue_path"
- class="js-new-issue btn btn-success btn-inverted float-left mr-2"
+ class="btn btn-success btn-inverted float-left mr-2"
+ data-testid="job-new-issue"
>{{ __('New issue') }}</gl-link
>
<gl-link
diff --git a/app/assets/javascripts/jobs/components/stuck_block.vue b/app/assets/javascripts/jobs/components/stuck_block.vue
index b69e6f9686f..8e8202246a2 100644
--- a/app/assets/javascripts/jobs/components/stuck_block.vue
+++ b/app/assets/javascripts/jobs/components/stuck_block.vue
@@ -1,10 +1,13 @@
<script>
-import { GlLink } from '@gitlab/ui';
+import { GlAlert, GlBadge, GlLink } from '@gitlab/ui';
+import { s__ } from '../../locale';
/**
* Renders Stuck Runners block for job's view.
*/
export default {
components: {
+ GlAlert,
+ GlBadge,
GlLink,
},
props: {
@@ -22,35 +25,50 @@ export default {
required: true,
},
},
+ computed: {
+ hasNoRunnersWithCorrespondingTags() {
+ return this.tags.length > 0;
+ },
+ stuckData() {
+ if (this.hasNoRunnersWithCorrespondingTags) {
+ return {
+ text: s__(`Job|This job is stuck because you don't have
+ any active runners online or available with any of these tags assigned to them:`),
+ dataTestId: 'job-stuck-with-tags',
+ showTags: true,
+ };
+ } else if (this.hasNoRunnersForProject) {
+ return {
+ text: s__(`Job|This job is stuck because the project
+ doesn't have any runners online assigned to it.`),
+ dataTestId: 'job-stuck-no-runners',
+ showTags: false,
+ };
+ }
+
+ return {
+ text: s__(`Job|This job is stuck because you don't
+ have any active runners that can run this job.`),
+ dataTestId: 'job-stuck-no-active-runners',
+ showTags: false,
+ };
+ },
+ },
};
</script>
<template>
- <div class="bs-callout bs-callout-warning">
- <p v-if="tags.length" class="js-stuck-with-tags gl-mb-0">
- {{
- s__(`This job is stuck because you don't have
- any active runners online or available with any of these tags assigned to them:`)
- }}
- <span v-for="(tag, index) in tags" :key="index" class="badge badge-primary gl-mr-2">
- {{ tag }}
- </span>
+ <gl-alert variant="warning" :dismissible="false">
+ <p class="gl-mb-0" :data-testid="stuckData.dataTestId">
+ {{ stuckData.text }}
+ <template v-if="stuckData.showTags">
+ <gl-badge v-for="tag in tags" :key="tag" variant="info">
+ {{ tag }}
+ </gl-badge>
+ </template>
</p>
- <p v-else-if="hasNoRunnersForProject" class="js-stuck-no-runners gl-mb-0">
- {{
- s__(`Job|This job is stuck because the project
- doesn't have any runners online assigned to it.`)
- }}
- </p>
- <p v-else class="js-stuck-no-active-runner gl-mb-0">
- {{
- s__(`This job is stuck because you don't
- have any active runners that can run this job.`)
- }}
- </p>
-
{{ __('Go to project') }}
- <gl-link v-if="runnersPath" :href="runnersPath" class="js-runners-path">
+ <gl-link v-if="runnersPath" :href="runnersPath">
{{ __('CI settings') }}
</gl-link>
- </div>
+ </gl-alert>
</template>
diff --git a/app/assets/javascripts/jobs/store/actions.js b/app/assets/javascripts/jobs/store/actions.js
index 4bd8d6f58a6..1e4b5e986db 100644
--- a/app/assets/javascripts/jobs/store/actions.js
+++ b/app/assets/javascripts/jobs/store/actions.js
@@ -3,7 +3,7 @@ import * as types from './mutation_types';
import axios from '~/lib/utils/axios_utils';
import Poll from '~/lib/utils/poll';
import { setFaviconOverlay, resetFavicon } from '~/lib/utils/common_utils';
-import flash from '~/flash';
+import { deprecatedCreateFlash as flash } from '~/flash';
import { __ } from '~/locale';
import {
canScroll,
@@ -247,6 +247,3 @@ export const triggerManualJob = ({ state }, variables) => {
})
.catch(() => flash(__('An error occurred while triggering the job.')));
};
-
-// prevent babel-plugin-rewire from generating an invalid default during karma tests
-export default () => {};
diff --git a/app/assets/javascripts/jobs/store/getters.js b/app/assets/javascripts/jobs/store/getters.js
index 3f02f924eed..dc4a3578a86 100644
--- a/app/assets/javascripts/jobs/store/getters.js
+++ b/app/assets/javascripts/jobs/store/getters.js
@@ -46,6 +46,3 @@ export const isScrollingDown = state => isScrolledToBottom() && !state.isTraceCo
export const hasRunnersForProject = state =>
state.job.runners.available && !state.job.runners.online;
-
-// prevent babel-plugin-rewire from generating an invalid default during karma tests
-export default () => {};