Skip to content

Commit 5881084

Browse files
committed
test(e2e): stopping task tests
1 parent ef4fc55 commit 5881084

File tree

6 files changed

+105
-13
lines changed

6 files changed

+105
-13
lines changed

e2e/tests/fixtures.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ export const test = base.extend<{
2727
await page.getByTestId('sidebar-currentProject').click();
2828
await page.getByTestId('sidebar-newProject').click();
2929
await page.getByTestId('newProject-name').fill('Test');
30-
await page.getByText('Demo', { exact: true }).check();
31-
await page.getByRole('button', { name: 'Create' }).click();
30+
await page.getByRole('dialog').getByText('Demo').click();
31+
await page.getByRole('dialog').getByRole('button', { name: 'Create' }).click();
3232
});
3333
}
3434
});

e2e/tests/task.spec.ts

Lines changed: 89 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,95 @@ test('run task from demo project', async ({ page, login, project }) => {
44
await login(true);
55
await project('task_runner', true);
66

7+
await page.getByText('Project Test created').waitFor();
8+
9+
await page.getByTestId('sidebar-templates').click();
10+
11+
await page.getByRole('link', { name: 'Build demo app' }).click();
12+
13+
await page.getByTestId('template-run').click();
14+
15+
await page.getByTestId('newTaskDialog').getByRole('textbox', { name: 'Message (Optional)' }).fill('Test');
16+
17+
await page.getByTestId('newTaskDialog').getByTestId('editDialog-save').click();
18+
19+
await page.getByTestId('task-rawLog').waitFor({timeout: 100000});
20+
21+
await expect(page.getByTestId('task-status')).toHaveText('Success');
22+
});
23+
24+
test('stop task on waiting', async ({ page, login, project }) => {
25+
await login(true);
26+
await project('task_runner', true);
27+
28+
await page.getByText('Project Test created').waitFor();
29+
730
await page.getByTestId('sidebar-templates').click();
831

9-
await page.getByRole('link', { name: 'Ping semaphoreui.com' }).click();
10-
await page.getByRole('button', { name: 'Run' }).click();
11-
await page.getByRole('textbox', { name: 'Message (Optional)' }).fill('Test');
12-
await page.getByRole('dialog').getByRole('button', { name: 'Run' }).click();
32+
await page.getByRole('link', { name: 'Build demo app' }).click();
33+
34+
await page.getByTestId('template-run').click();
35+
36+
await page.getByTestId('newTaskDialog').getByRole('textbox', { name: 'Message (Optional)' }).fill('Test');
37+
38+
await page.getByTestId('newTaskDialog').getByTestId('editDialog-save').click();
39+
40+
await page.getByRole('dialog').getByRole('button', { name: 'Stop' }).click();
41+
42+
await page.getByTestId('task-rawLog').waitFor();
43+
44+
await expect(page.getByTestId('task-status')).toHaveText('Stopped');
45+
46+
});
47+
48+
test('stop task on cloning', async ({ page, login, project }) => {
49+
await login(true);
50+
await project('task_runner', true);
51+
52+
await page.getByText('Project Test created').waitFor();
53+
54+
await page.getByTestId('sidebar-templates').click();
55+
56+
await page.getByRole('link', { name: 'Build demo app' }).click();
57+
58+
await page.getByTestId('template-run').click();
59+
60+
await page.getByTestId('newTaskDialog').getByRole('textbox', { name: 'Message (Optional)' }).fill('Test');
61+
62+
await page.getByTestId('newTaskDialog').getByTestId('editDialog-save').click();
63+
64+
await page.getByRole('dialog').getByText('Get current commit hash').waitFor();
65+
66+
await page.getByRole('dialog').getByRole('button', { name: 'Stop' }).click();
67+
68+
await page.getByTestId('task-rawLog').waitFor();
69+
70+
await expect(page.getByTestId('task-status')).toHaveText('Stopped');
71+
72+
});
73+
74+
test('stop task on running', async ({ page, login, project }) => {
75+
await login(true);
76+
await project('task_runner', true);
77+
78+
await page.getByText('Project Test created').waitFor();
79+
80+
await page.getByTestId('sidebar-templates').click();
81+
82+
await page.getByRole('link', { name: 'Build demo app' }).click();
83+
84+
await page.getByTestId('template-run').click();
85+
86+
await page.getByTestId('newTaskDialog').getByRole('textbox', { name: 'Message (Optional)' }).fill('Test');
87+
88+
await page.getByTestId('newTaskDialog').getByTestId('editDialog-save').click();
89+
90+
await page.getByRole('dialog').getByText('TASK [Gathering Facts] *********************************************************').waitFor();
91+
92+
await page.getByRole('dialog').getByRole('button', { name: 'Stop' }).click();
93+
94+
await page.getByTestId('task-rawLog').waitFor();
1395

14-
await page.getByTestId('task-rawlog').waitFor({timeout: 100000});
15-
});
96+
await expect(page.getByTestId('task-status')).toHaveText('Stopped');
97+
98+
});

web/src/components/EditDialog.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ Can use used in tandem with ItemFormBase.js. See KeyForm.vue for example.
1010
persistent
1111
:fullscreen="expandable && fullscreen"
1212
:transition="false"
13-
:content-class="`item-dialog item-dialog item-dialog--${position} ${contentClass}`"
13+
:content-class="`item-dialog item-dialog--${position} ${contentClass || ''}`"
1414
>
15-
<v-card>
15+
<v-card :data-testid="testId">
1616
<v-card-title>
1717
<slot name="title">
1818
<v-icon v-if="icon" :color="iconColor" class="mr-3">{{ icon }}</v-icon>
@@ -75,6 +75,7 @@ Can use used in tandem with ItemFormBase.js. See KeyForm.vue for example.
7575
text
7676
@click="needSave = true"
7777
v-if="saveButtonText != null"
78+
data-testid="editDialog-save"
7879
>
7980
{{ saveButtonText }}
8081
</v-btn>
@@ -95,6 +96,7 @@ import EventBus from '@/event-bus';
9596
9697
export default {
9798
props: {
99+
testId: String,
98100
contentClass: String,
99101
position: String,
100102
title: String,

web/src/components/NewTaskDialog.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
:title="$t('newTask')"
66
@save="closeDialog"
77
@close="closeDialog"
8+
test-id="newTaskDialog"
89
>
910
<template v-slot:title={}>
1011
<v-icon small class="mr-4">{{ TEMPLATE_TYPE_ICONS[templateType] }}</v-icon>

web/src/components/TaskLogView.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
<v-list-item class="pa-0">
3434
<v-list-item-content>
3535
<div class="pr-4">
36-
<TaskStatus :status="item.status"/>
36+
<TaskStatus :status="item.status" data-testid="task-status" />
3737
</div>
3838
</v-list-item-content>
3939
</v-list-item>
@@ -132,7 +132,7 @@
132132
class="task-log-action-button"
133133
style="right: 20px; width: 150px;"
134134
target="_blank"
135-
data-testid="task-rawlog"
135+
data-testid="task-rawLog"
136136
>{{ $t('raw_log') }}</v-btn>
137137

138138
</div>

web/src/views/project/TemplateView.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,13 @@
6464

6565
<v-spacer></v-spacer>
6666

67-
<v-btn color="primary" depressed class="mr-3" @click="newTaskDialog = true">
67+
<v-btn
68+
color="primary"
69+
depressed
70+
class="mr-3"
71+
@click="newTaskDialog = true"
72+
data-testid="template-run"
73+
>
6874
{{ $t(TEMPLATE_TYPE_ACTION_TITLES[item.type]) }}
6975
</v-btn>
7076

0 commit comments

Comments
 (0)