browsergym-workarena 0.2.0__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- browsergym/workarena/__init__.py +13 -1
- browsergym/workarena/api/category.py +74 -0
- browsergym/workarena/api/change_request.py +87 -0
- browsergym/workarena/api/computer_asset.py +90 -0
- browsergym/workarena/api/cost_center.py +19 -0
- browsergym/workarena/api/expense_line.py +89 -0
- browsergym/workarena/api/incident.py +45 -0
- browsergym/workarena/api/knowledge.py +29 -0
- browsergym/workarena/api/problem.py +90 -0
- browsergym/workarena/api/report.py +183 -0
- browsergym/workarena/api/requested_items.py +63 -0
- browsergym/workarena/api/user.py +11 -8
- browsergym/workarena/api/utils.py +47 -3
- browsergym/workarena/config.py +21 -1
- browsergym/workarena/data_files/setup_files/forms/expected_incident_form_fields.json +1 -1
- browsergym/workarena/data_files/setup_files/forms/expected_request_item_form_fields.json +1 -0
- browsergym/workarena/data_files/setup_files/knowledge/protocols.json +46 -0
- browsergym/workarena/data_files/setup_files/knowledge/test.html +1 -0
- browsergym/workarena/data_files/setup_files/lists/expected_asset_list_columns.json +2 -24
- browsergym/workarena/data_files/setup_files/lists/expected_change_request_list_columns.json +4 -40
- browsergym/workarena/data_files/setup_files/lists/expected_expense_line_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_hardware_list_columns.json +1 -42
- browsergym/workarena/data_files/setup_files/lists/expected_incident_list_columns.json +2 -18
- browsergym/workarena/data_files/setup_files/lists/expected_problem_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_requested_items_list_columns.json +12 -0
- browsergym/workarena/data_files/setup_files/lists/expected_service_catalog_list_columns.json +2 -19
- browsergym/workarena/data_files/setup_files/lists/expected_user_list_columns.json +3 -50
- browsergym/workarena/data_files/task_configs/all_menu.json +95 -95
- browsergym/workarena/data_files/task_configs/dashboard_retrieval_minmax_task.json +1 -1
- browsergym/workarena/data_files/task_configs/dashboard_retrieval_value_task.json +1 -1
- browsergym/workarena/data_files/task_configs/filter_service_catalog_item_list_task.json +7986 -7982
- browsergym/workarena/data_files/task_configs/impersonation_users.json +3 -3
- browsergym/workarena/data_files/task_configs/report_retrieval_minmax_task.json +1 -1
- browsergym/workarena/data_files/task_configs/report_retrieval_value_task.json +1 -1
- browsergym/workarena/human_eval/console.js +176 -0
- browsergym/workarena/human_eval/tool.py +366 -0
- browsergym/workarena/install.py +81 -20
- browsergym/workarena/tasks/base.py +55 -20
- browsergym/workarena/tasks/comp_building_block.py +4 -0
- browsergym/workarena/tasks/compositional/__init__.py +76 -0
- browsergym/workarena/tasks/compositional/base.py +364 -0
- browsergym/workarena/tasks/compositional/dash_do_base.py +1366 -0
- browsergym/workarena/tasks/compositional/dash_do_catalog.py +1127 -0
- browsergym/workarena/tasks/compositional/dash_do_catalog_infeasible.py +2047 -0
- browsergym/workarena/tasks/compositional/dash_do_create_incident.py +403 -0
- browsergym/workarena/tasks/compositional/dash_do_create_incident_infeasible.py +278 -0
- browsergym/workarena/tasks/compositional/dash_do_create_problem.py +336 -0
- browsergym/workarena/tasks/compositional/dash_do_create_problem_infeasible.py +235 -0
- browsergym/workarena/tasks/compositional/dash_do_filter.py +1600 -0
- browsergym/workarena/tasks/compositional/dash_do_request_item.py +1315 -0
- browsergym/workarena/tasks/compositional/dash_do_request_item_infeasible.py +693 -0
- browsergym/workarena/tasks/compositional/delete_record.py +341 -0
- browsergym/workarena/tasks/compositional/edit_knowledge_base.py +457 -0
- browsergym/workarena/tasks/compositional/expense_management.py +598 -0
- browsergym/workarena/tasks/compositional/filter_and_do.py +139 -0
- browsergym/workarena/tasks/compositional/find_and_order_item.py +345 -0
- browsergym/workarena/tasks/compositional/manage_change_request_schedule.py +1417 -0
- browsergym/workarena/tasks/compositional/mark_duplicate_problems.py +499 -0
- browsergym/workarena/tasks/compositional/maximize_investment_return.py +1763 -0
- browsergym/workarena/tasks/compositional/navigate_and_do.py +1151 -0
- browsergym/workarena/tasks/compositional/navigate_and_do_infeasible.py +2100 -0
- browsergym/workarena/tasks/compositional/offboard_user.py +207 -0
- browsergym/workarena/tasks/compositional/onboard_user.py +226 -0
- browsergym/workarena/tasks/compositional/update_task.py +145 -0
- browsergym/workarena/tasks/compositional/utils/curriculum.py +215 -0
- browsergym/workarena/tasks/compositional/utils/infeasible_configs.py +151 -0
- browsergym/workarena/tasks/compositional/utils/knapsack.py +192 -0
- browsergym/workarena/tasks/compositional/warranty_check.py +227 -0
- browsergym/workarena/tasks/compositional/work_assignment.py +804 -0
- browsergym/workarena/tasks/compositional/workload_balancing.py +396 -0
- browsergym/workarena/tasks/dashboard.py +188 -8
- browsergym/workarena/tasks/form.py +1024 -232
- browsergym/workarena/tasks/knowledge.py +216 -25
- browsergym/workarena/tasks/list.py +519 -102
- browsergym/workarena/tasks/mark_duplicate_problem.py +171 -0
- browsergym/workarena/tasks/navigation.py +55 -13
- browsergym/workarena/tasks/scripts/extract_all_menu_items.py +9 -2
- browsergym/workarena/tasks/scripts/generate_dashboard_configs.py +6 -5
- browsergym/workarena/tasks/scripts/service_catalog.py +2 -1
- browsergym/workarena/tasks/scripts/validate.py +8 -2
- browsergym/workarena/tasks/send_chat_message.py +90 -0
- browsergym/workarena/tasks/service_catalog.py +94 -26
- browsergym/workarena/tasks/utils/form.py +1 -4
- browsergym/workarena/tasks/utils/private_tasks.py +63 -0
- browsergym/workarena/tasks/utils/utils.py +13 -0
- {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/METADATA +27 -20
- browsergym_workarena-0.3.0.dist-info/RECORD +138 -0
- {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/entry_points.txt +1 -0
- browsergym_workarena-0.2.0.dist-info/RECORD +0 -85
- {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/WHEEL +0 -0
- {browsergym_workarena-0.2.0.dist-info → browsergym_workarena-0.3.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,1151 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
3
|
+
from faker import Faker
|
|
4
|
+
|
|
5
|
+
fake = Faker()
|
|
6
|
+
|
|
7
|
+
from playwright.sync_api._generated import Page
|
|
8
|
+
|
|
9
|
+
from browsergym.workarena.tasks.form import (
|
|
10
|
+
CreateChangeRequestTask,
|
|
11
|
+
CreateHardwareAssetTask,
|
|
12
|
+
CreateIncidentTask,
|
|
13
|
+
CreateProblemTask,
|
|
14
|
+
CreateUserTask,
|
|
15
|
+
)
|
|
16
|
+
from browsergym.workarena.tasks.list import (
|
|
17
|
+
FilterAssetListTask,
|
|
18
|
+
FilterChangeRequestListTask,
|
|
19
|
+
FilterHardwareListTask,
|
|
20
|
+
FilterIncidentListTask,
|
|
21
|
+
FilterServiceCatalogItemListTask,
|
|
22
|
+
FilterUserListTask,
|
|
23
|
+
SortAssetListTask,
|
|
24
|
+
SortChangeRequestListTask,
|
|
25
|
+
SortHardwareListTask,
|
|
26
|
+
SortIncidentListTask,
|
|
27
|
+
SortServiceCatalogItemListTask,
|
|
28
|
+
SortUserListTask,
|
|
29
|
+
)
|
|
30
|
+
from browsergym.workarena.tasks.navigation import AllMenuTask
|
|
31
|
+
from browsergym.workarena.tasks.service_catalog import (
|
|
32
|
+
OrderDeveloperLaptopTask,
|
|
33
|
+
OrderIpadMiniTask,
|
|
34
|
+
OrderIpadProTask,
|
|
35
|
+
OrderSalesLaptopTask,
|
|
36
|
+
OrderStandardLaptopTask,
|
|
37
|
+
OrderAppleWatchTask,
|
|
38
|
+
OrderAppleMacBookPro15Task,
|
|
39
|
+
OrderDevelopmentLaptopPCTask,
|
|
40
|
+
OrderLoanerLaptopTask,
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
from .base import CompositionalTask, HumanEvalTask
|
|
44
|
+
|
|
45
|
+
from ..base import AbstractServiceNowTask
|
|
46
|
+
|
|
47
|
+
from ...instance import SNowInstance
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class NavigateAndDoTask(CompositionalTask, HumanEvalTask):
|
|
51
|
+
def __init__(
|
|
52
|
+
self,
|
|
53
|
+
seed: int = None,
|
|
54
|
+
instance: SNowInstance = None,
|
|
55
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
56
|
+
navigation_config: dict = None,
|
|
57
|
+
level: int = 2,
|
|
58
|
+
task: AbstractServiceNowTask = None,
|
|
59
|
+
) -> None:
|
|
60
|
+
"""
|
|
61
|
+
Generic task to navigate to a specific page and perform a task.
|
|
62
|
+
|
|
63
|
+
Parameters:
|
|
64
|
+
-----------
|
|
65
|
+
instance: SNowInstance
|
|
66
|
+
The ServiceNow instance to run the task on.
|
|
67
|
+
fixed_config: list[AbstractServiceNowTask]
|
|
68
|
+
A list of tuples, each containing a subtask
|
|
69
|
+
navigation_config: dict
|
|
70
|
+
Configuration to use for the navigation task. Contains the application and the module; the URL is not necessary as the
|
|
71
|
+
nav step is not validated.
|
|
72
|
+
level: int
|
|
73
|
+
The level of the task; choice between 2 and 3. L2 will have all the info in the the goal and start in the SNOW home page.
|
|
74
|
+
L3 will start in a private task page describing the information needed to complete the task and the related company protocol
|
|
75
|
+
to complete it.
|
|
76
|
+
task: AbstractServiceNowTask
|
|
77
|
+
The task to perform after navigating to the page.
|
|
78
|
+
|
|
79
|
+
Attributes:
|
|
80
|
+
-----------
|
|
81
|
+
task_description: str
|
|
82
|
+
The start of the task description to be completed. Provided by the child class.
|
|
83
|
+
short_description: str
|
|
84
|
+
A short description of the task to be completed. "Create a new user". Provided by the child class.
|
|
85
|
+
"""
|
|
86
|
+
assert level in [2, 3], "Level must be either 2 or 3"
|
|
87
|
+
self.level = level
|
|
88
|
+
super().__init__(
|
|
89
|
+
seed=seed,
|
|
90
|
+
instance=instance,
|
|
91
|
+
fixed_config=fixed_config,
|
|
92
|
+
level=level,
|
|
93
|
+
)
|
|
94
|
+
self.used_in_level_2 = self.level == 2
|
|
95
|
+
self.task = task
|
|
96
|
+
self.task_description = None
|
|
97
|
+
self.short_description = None
|
|
98
|
+
# Get the navigation configuration; there is only one configuration for each application and module combo
|
|
99
|
+
self.navigation_config = navigation_config
|
|
100
|
+
|
|
101
|
+
def setup_goal(self, page: Page) -> tuple[str, dict]:
|
|
102
|
+
config = self.fixed_config if self.fixed_config else self._get_config()
|
|
103
|
+
goal, info = super().setup_goal(page=page, config=config)
|
|
104
|
+
|
|
105
|
+
return goal, info
|
|
106
|
+
|
|
107
|
+
def _get_config(self) -> list[AbstractServiceNowTask]:
|
|
108
|
+
|
|
109
|
+
config = [
|
|
110
|
+
# Navigate to the task start page
|
|
111
|
+
AllMenuTask(
|
|
112
|
+
instance=self.instance,
|
|
113
|
+
fixed_config=self.navigation_config,
|
|
114
|
+
is_validated=False,
|
|
115
|
+
used_in_level_2=True,
|
|
116
|
+
has_description=True,
|
|
117
|
+
),
|
|
118
|
+
self.task,
|
|
119
|
+
]
|
|
120
|
+
|
|
121
|
+
return config
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class NavigateAndCreateUserTask(NavigateAndDoTask):
|
|
125
|
+
def __init__(
|
|
126
|
+
self,
|
|
127
|
+
seed: int = None,
|
|
128
|
+
instance: SNowInstance = None,
|
|
129
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
130
|
+
level: int = 2,
|
|
131
|
+
) -> None:
|
|
132
|
+
"""
|
|
133
|
+
Navigate to the user list page and create a new user.
|
|
134
|
+
|
|
135
|
+
Attributes:
|
|
136
|
+
-----------
|
|
137
|
+
task_description: str
|
|
138
|
+
The start of the task description to be completed.
|
|
139
|
+
short_description: str
|
|
140
|
+
A short description of the task to be completed. "Create a new user"
|
|
141
|
+
"""
|
|
142
|
+
super().__init__(
|
|
143
|
+
seed=seed,
|
|
144
|
+
instance=instance,
|
|
145
|
+
fixed_config=fixed_config,
|
|
146
|
+
navigation_config={
|
|
147
|
+
"application": "Organization",
|
|
148
|
+
"module": "Users",
|
|
149
|
+
},
|
|
150
|
+
level=level,
|
|
151
|
+
task=CreateUserTask(
|
|
152
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
153
|
+
),
|
|
154
|
+
)
|
|
155
|
+
self.task_description = "Create a new user with the required information. \n"
|
|
156
|
+
self.short_description = "Create a new user"
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class NavigateAndCreateIncidentTask(NavigateAndDoTask):
|
|
160
|
+
def __init__(
|
|
161
|
+
self,
|
|
162
|
+
seed: int = None,
|
|
163
|
+
instance: SNowInstance = None,
|
|
164
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
165
|
+
level: int = 2,
|
|
166
|
+
) -> None:
|
|
167
|
+
"""
|
|
168
|
+
Navigate to the incident list page and create a new incident.
|
|
169
|
+
|
|
170
|
+
Attributes:
|
|
171
|
+
-----------
|
|
172
|
+
task_description: str
|
|
173
|
+
The start of the task description to be completed.
|
|
174
|
+
short_description: str
|
|
175
|
+
A short description of the task to be completed. "Create a new incident"
|
|
176
|
+
"""
|
|
177
|
+
super().__init__(
|
|
178
|
+
seed=seed,
|
|
179
|
+
instance=instance,
|
|
180
|
+
fixed_config=fixed_config,
|
|
181
|
+
navigation_config={
|
|
182
|
+
"application": "Service Desk",
|
|
183
|
+
"module": "Incidents",
|
|
184
|
+
},
|
|
185
|
+
level=level,
|
|
186
|
+
task=CreateIncidentTask(
|
|
187
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
188
|
+
),
|
|
189
|
+
)
|
|
190
|
+
self.task_description = "Create a new incident with the required information. \n"
|
|
191
|
+
self.short_description = "Create a new incident"
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class NavigateAndCreateChangeRequestTask(NavigateAndDoTask):
|
|
195
|
+
def __init__(
|
|
196
|
+
self,
|
|
197
|
+
seed: int = None,
|
|
198
|
+
instance: SNowInstance = None,
|
|
199
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
200
|
+
level: int = 2,
|
|
201
|
+
) -> None:
|
|
202
|
+
"""
|
|
203
|
+
Navigate to the change request list page and create a new change request.
|
|
204
|
+
|
|
205
|
+
Attributes:
|
|
206
|
+
-----------
|
|
207
|
+
task_description: str
|
|
208
|
+
The start of the task description to be completed.
|
|
209
|
+
short_description: str
|
|
210
|
+
A short description of the task to be completed. "Create a new change request"
|
|
211
|
+
"""
|
|
212
|
+
super().__init__(
|
|
213
|
+
seed=seed,
|
|
214
|
+
instance=instance,
|
|
215
|
+
fixed_config=fixed_config,
|
|
216
|
+
navigation_config={
|
|
217
|
+
"application": "Change",
|
|
218
|
+
"module": "All",
|
|
219
|
+
},
|
|
220
|
+
level=level,
|
|
221
|
+
task=CreateChangeRequestTask(
|
|
222
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
223
|
+
),
|
|
224
|
+
)
|
|
225
|
+
self.task_description = (
|
|
226
|
+
'Create a new "Normal" change request with the required information. \n'
|
|
227
|
+
)
|
|
228
|
+
self.short_description = 'Create a new "Normal" change request'
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
class NavigateAndCreateProblemTask(NavigateAndDoTask):
|
|
232
|
+
def __init__(
|
|
233
|
+
self,
|
|
234
|
+
seed: int = None,
|
|
235
|
+
instance: SNowInstance = None,
|
|
236
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
237
|
+
level: int = 2,
|
|
238
|
+
) -> None:
|
|
239
|
+
"""
|
|
240
|
+
Navigate to the problem list page and create a new problem.
|
|
241
|
+
|
|
242
|
+
Attributes:
|
|
243
|
+
-----------
|
|
244
|
+
task_description: str
|
|
245
|
+
The start of the task description to be completed.
|
|
246
|
+
short_description: str
|
|
247
|
+
A short description of the task to be completed. "Create a new problem"
|
|
248
|
+
"""
|
|
249
|
+
super().__init__(
|
|
250
|
+
seed=seed,
|
|
251
|
+
instance=instance,
|
|
252
|
+
fixed_config=fixed_config,
|
|
253
|
+
navigation_config={
|
|
254
|
+
"application": "Problem",
|
|
255
|
+
"module": "All",
|
|
256
|
+
},
|
|
257
|
+
level=level,
|
|
258
|
+
task=CreateProblemTask(
|
|
259
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
260
|
+
),
|
|
261
|
+
)
|
|
262
|
+
self.task_description = "Create a new problem with the required information. \n"
|
|
263
|
+
self.short_description = "Create a new problem"
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
class NavigateAndCreateHardwareAssetTask(NavigateAndDoTask):
|
|
267
|
+
def __init__(
|
|
268
|
+
self,
|
|
269
|
+
seed: int = None,
|
|
270
|
+
instance: SNowInstance = None,
|
|
271
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
272
|
+
level: int = 2,
|
|
273
|
+
) -> None:
|
|
274
|
+
"""
|
|
275
|
+
Navigate to the hardware asset list page and create a new hardware asset.
|
|
276
|
+
|
|
277
|
+
Attributes:
|
|
278
|
+
-----------
|
|
279
|
+
task_description: str
|
|
280
|
+
The start of the task description to be completed.
|
|
281
|
+
short_description: str
|
|
282
|
+
A short description of the task to be completed. "Create a new hardware asset"
|
|
283
|
+
"""
|
|
284
|
+
super().__init__(
|
|
285
|
+
seed=seed,
|
|
286
|
+
instance=instance,
|
|
287
|
+
fixed_config=fixed_config,
|
|
288
|
+
navigation_config={
|
|
289
|
+
"application": "Asset",
|
|
290
|
+
"module": "Portfolios > Hardware Assets",
|
|
291
|
+
},
|
|
292
|
+
level=level,
|
|
293
|
+
task=CreateHardwareAssetTask(
|
|
294
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
295
|
+
),
|
|
296
|
+
)
|
|
297
|
+
self.task_description = "Create a new hardware asset with the required information. \n"
|
|
298
|
+
self.short_description = "Create a new hardware asset"
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
class NavigateAndOrderStandardLaptopTask(NavigateAndDoTask):
|
|
302
|
+
def __init__(
|
|
303
|
+
self,
|
|
304
|
+
seed: int = None,
|
|
305
|
+
instance: SNowInstance = None,
|
|
306
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
307
|
+
level: int = 2,
|
|
308
|
+
) -> None:
|
|
309
|
+
"""
|
|
310
|
+
Navigate to the service catalog item list page and order a standard laptop.
|
|
311
|
+
|
|
312
|
+
Attributes:
|
|
313
|
+
-----------
|
|
314
|
+
task_description: str
|
|
315
|
+
The start of the task description to be completed.
|
|
316
|
+
short_description: str
|
|
317
|
+
A short description of the task to be completed. "Order a standard laptop"
|
|
318
|
+
"""
|
|
319
|
+
super().__init__(
|
|
320
|
+
seed=seed,
|
|
321
|
+
instance=instance,
|
|
322
|
+
fixed_config=fixed_config,
|
|
323
|
+
navigation_config={
|
|
324
|
+
"application": "Self-Service",
|
|
325
|
+
"module": "Service Catalog",
|
|
326
|
+
},
|
|
327
|
+
level=level,
|
|
328
|
+
task=OrderStandardLaptopTask(
|
|
329
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
330
|
+
),
|
|
331
|
+
)
|
|
332
|
+
self.task_description = "Order a standard laptop from the service catalog with the required configuration if applicable. \n"
|
|
333
|
+
self.short_description = "Order a standard laptop from the service catalog"
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
class NavigateAndOrderSalesLaptopTask(NavigateAndDoTask):
|
|
337
|
+
def __init__(
|
|
338
|
+
self,
|
|
339
|
+
seed: int = None,
|
|
340
|
+
instance: SNowInstance = None,
|
|
341
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
342
|
+
level: int = 2,
|
|
343
|
+
) -> None:
|
|
344
|
+
"""
|
|
345
|
+
Navigate to the service catalog item list page and order a sales laptop.
|
|
346
|
+
|
|
347
|
+
Attributes:
|
|
348
|
+
-----------
|
|
349
|
+
task_description: str
|
|
350
|
+
The start of the task description to be completed.
|
|
351
|
+
short_description: str
|
|
352
|
+
A short description of the task to be completed. "Order a sales laptop"
|
|
353
|
+
"""
|
|
354
|
+
super().__init__(
|
|
355
|
+
seed=seed,
|
|
356
|
+
instance=instance,
|
|
357
|
+
fixed_config=fixed_config,
|
|
358
|
+
navigation_config={
|
|
359
|
+
"application": "Self-Service",
|
|
360
|
+
"module": "Service Catalog",
|
|
361
|
+
},
|
|
362
|
+
level=level,
|
|
363
|
+
task=OrderSalesLaptopTask(
|
|
364
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
365
|
+
),
|
|
366
|
+
)
|
|
367
|
+
self.task_description = "Order a sales laptop from the service catalog with the required configuration if applicable. \n"
|
|
368
|
+
self.short_description = "Order a sales laptop from the service catalog"
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
class NavigateAndOrderDeveloperLaptopTask(NavigateAndDoTask):
|
|
372
|
+
def __init__(
|
|
373
|
+
self,
|
|
374
|
+
seed: int = None,
|
|
375
|
+
instance: SNowInstance = None,
|
|
376
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
377
|
+
level: int = 2,
|
|
378
|
+
) -> None:
|
|
379
|
+
"""
|
|
380
|
+
Navigate to the service catalog item list page and order a developer laptop.
|
|
381
|
+
|
|
382
|
+
Attributes:
|
|
383
|
+
-----------
|
|
384
|
+
task_description: str
|
|
385
|
+
The start of the task description to be completed.
|
|
386
|
+
short_description: str
|
|
387
|
+
A short description of the task to be completed. "Order a developer laptop"
|
|
388
|
+
"""
|
|
389
|
+
super().__init__(
|
|
390
|
+
seed=seed,
|
|
391
|
+
instance=instance,
|
|
392
|
+
fixed_config=fixed_config,
|
|
393
|
+
navigation_config={
|
|
394
|
+
"application": "Self-Service",
|
|
395
|
+
"module": "Service Catalog",
|
|
396
|
+
},
|
|
397
|
+
level=level,
|
|
398
|
+
task=OrderDeveloperLaptopTask(
|
|
399
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
400
|
+
),
|
|
401
|
+
)
|
|
402
|
+
self.task_description = "Order a developer laptop from the service catalog with the required configuration if applicable. \n"
|
|
403
|
+
self.short_description = "Order a developer laptop from the service catalog"
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
class NavigateAndOrderIpadProTask(NavigateAndDoTask):
|
|
407
|
+
def __init__(
|
|
408
|
+
self,
|
|
409
|
+
seed: int = None,
|
|
410
|
+
instance: SNowInstance = None,
|
|
411
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
412
|
+
level: int = 2,
|
|
413
|
+
) -> None:
|
|
414
|
+
"""
|
|
415
|
+
Navigate to the service catalog item list page and order an iPad Pro.
|
|
416
|
+
|
|
417
|
+
Attributes:
|
|
418
|
+
-----------
|
|
419
|
+
task_description: str
|
|
420
|
+
The start of the task description to be completed.
|
|
421
|
+
short_description: str
|
|
422
|
+
A short description of the task to be completed. "Order an iPad Pro"
|
|
423
|
+
"""
|
|
424
|
+
super().__init__(
|
|
425
|
+
seed=seed,
|
|
426
|
+
instance=instance,
|
|
427
|
+
fixed_config=fixed_config,
|
|
428
|
+
navigation_config={
|
|
429
|
+
"application": "Self-Service",
|
|
430
|
+
"module": "Service Catalog",
|
|
431
|
+
},
|
|
432
|
+
level=level,
|
|
433
|
+
task=OrderIpadProTask(
|
|
434
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
435
|
+
),
|
|
436
|
+
)
|
|
437
|
+
self.task_description = "Order an iPad Pro from the service catalog with the required configuration if applicable. \n"
|
|
438
|
+
self.short_description = "Order an iPad Pro from the service catalog"
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
class NavigateAndOrderIpadMiniTask(NavigateAndDoTask):
|
|
442
|
+
def __init__(
|
|
443
|
+
self,
|
|
444
|
+
seed: int = None,
|
|
445
|
+
instance: SNowInstance = None,
|
|
446
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
447
|
+
level: int = 2,
|
|
448
|
+
) -> None:
|
|
449
|
+
"""
|
|
450
|
+
Navigate to the service catalog item list page and order an iPad Mini.
|
|
451
|
+
|
|
452
|
+
Attributes:
|
|
453
|
+
-----------
|
|
454
|
+
task_description: str
|
|
455
|
+
The start of the task description to be completed.
|
|
456
|
+
short_description: str
|
|
457
|
+
A short description of the task to be completed. "Order an iPad Mini"
|
|
458
|
+
"""
|
|
459
|
+
super().__init__(
|
|
460
|
+
seed=seed,
|
|
461
|
+
instance=instance,
|
|
462
|
+
fixed_config=fixed_config,
|
|
463
|
+
navigation_config={
|
|
464
|
+
"application": "Self-Service",
|
|
465
|
+
"module": "Service Catalog",
|
|
466
|
+
},
|
|
467
|
+
level=level,
|
|
468
|
+
task=OrderIpadMiniTask(
|
|
469
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
470
|
+
),
|
|
471
|
+
)
|
|
472
|
+
self.task_description = "Order an iPad Mini from the service catalog with the required configuration if applicable. \n"
|
|
473
|
+
self.short_description = "Order an iPad Mini from the service catalog"
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
class NavigateAndOrderAppleWatchTask(NavigateAndDoTask):
|
|
477
|
+
def __init__(
|
|
478
|
+
self,
|
|
479
|
+
seed: int = None,
|
|
480
|
+
instance: SNowInstance = None,
|
|
481
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
482
|
+
level: int = 2,
|
|
483
|
+
) -> None:
|
|
484
|
+
"""
|
|
485
|
+
Navigate to the service catalog item list page and order an Apple Watch.
|
|
486
|
+
|
|
487
|
+
Attributes:
|
|
488
|
+
-----------
|
|
489
|
+
task_description: str
|
|
490
|
+
The start of the task description to be completed.
|
|
491
|
+
short_description: str
|
|
492
|
+
A short description of the task to be completed. "Order an Apple Watch"
|
|
493
|
+
"""
|
|
494
|
+
super().__init__(
|
|
495
|
+
seed=seed,
|
|
496
|
+
instance=instance,
|
|
497
|
+
fixed_config=fixed_config,
|
|
498
|
+
navigation_config={
|
|
499
|
+
"application": "Self-Service",
|
|
500
|
+
"module": "Service Catalog",
|
|
501
|
+
},
|
|
502
|
+
level=level,
|
|
503
|
+
task=OrderAppleWatchTask(
|
|
504
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
505
|
+
),
|
|
506
|
+
)
|
|
507
|
+
self.task_description = "Order an Apple Watch from the service catalog with the required configuration if applicable. \n"
|
|
508
|
+
self.short_description = "Order an Apple Watch from the service catalog"
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
class NavigateAndOrderAppleMacBookPro15Task(NavigateAndDoTask):
|
|
512
|
+
def __init__(
|
|
513
|
+
self,
|
|
514
|
+
seed: int = None,
|
|
515
|
+
instance: SNowInstance = None,
|
|
516
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
517
|
+
level: int = 2,
|
|
518
|
+
) -> None:
|
|
519
|
+
"""
|
|
520
|
+
Navigate to the service catalog item list page and order an Apple MacBook Pro 15".
|
|
521
|
+
|
|
522
|
+
Attributes:
|
|
523
|
+
-----------
|
|
524
|
+
task_description: str
|
|
525
|
+
The start of the task description to be completed.
|
|
526
|
+
short_description: str
|
|
527
|
+
A short description of the task to be completed. "Order an Apple MacBook Pro 15"
|
|
528
|
+
"""
|
|
529
|
+
super().__init__(
|
|
530
|
+
seed=seed,
|
|
531
|
+
instance=instance,
|
|
532
|
+
fixed_config=fixed_config,
|
|
533
|
+
navigation_config={
|
|
534
|
+
"application": "Self-Service",
|
|
535
|
+
"module": "Service Catalog",
|
|
536
|
+
},
|
|
537
|
+
level=level,
|
|
538
|
+
task=OrderAppleMacBookPro15Task(
|
|
539
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
540
|
+
),
|
|
541
|
+
)
|
|
542
|
+
self.task_description = 'Order an Apple MacBook Pro 15" from the service catalog with the required configuration if applicable. \n'
|
|
543
|
+
self.short_description = 'Order an Apple MacBook Pro 15" from the service catalog'
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
class NavigateAndOrderDevelopmentLaptopPCTask(NavigateAndDoTask):
|
|
547
|
+
def __init__(
|
|
548
|
+
self,
|
|
549
|
+
seed: int = None,
|
|
550
|
+
instance: SNowInstance = None,
|
|
551
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
552
|
+
level: int = 2,
|
|
553
|
+
) -> None:
|
|
554
|
+
"""
|
|
555
|
+
Navigate to the service catalog item list page and order a development laptop PC.
|
|
556
|
+
|
|
557
|
+
Attributes:
|
|
558
|
+
-----------
|
|
559
|
+
task_description: str
|
|
560
|
+
The start of the task description to be completed.
|
|
561
|
+
short_description: str
|
|
562
|
+
A short description of the task to be completed. "Order a development laptop PC"
|
|
563
|
+
"""
|
|
564
|
+
super().__init__(
|
|
565
|
+
seed=seed,
|
|
566
|
+
instance=instance,
|
|
567
|
+
fixed_config=fixed_config,
|
|
568
|
+
navigation_config={
|
|
569
|
+
"application": "Self-Service",
|
|
570
|
+
"module": "Service Catalog",
|
|
571
|
+
},
|
|
572
|
+
level=level,
|
|
573
|
+
task=OrderDevelopmentLaptopPCTask(
|
|
574
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
575
|
+
),
|
|
576
|
+
)
|
|
577
|
+
self.task_description = "Order a development laptop PC from the service catalog with the required configuration if applicable. \n"
|
|
578
|
+
self.short_description = "Order a development laptop PC from the service catalog"
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
class NavigateAndOrderLoanerLaptopTask(NavigateAndDoTask):
|
|
582
|
+
def __init__(
|
|
583
|
+
self,
|
|
584
|
+
seed: int = None,
|
|
585
|
+
instance: SNowInstance = None,
|
|
586
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
587
|
+
level: int = 2,
|
|
588
|
+
) -> None:
|
|
589
|
+
"""
|
|
590
|
+
Navigate to the service catalog item list page and order a loaner laptop.
|
|
591
|
+
|
|
592
|
+
Attributes:
|
|
593
|
+
-----------
|
|
594
|
+
task_description: str
|
|
595
|
+
The start of the task description to be completed.
|
|
596
|
+
short_description: str
|
|
597
|
+
A short description of the task to be completed. "Order a loaner laptop"
|
|
598
|
+
"""
|
|
599
|
+
super().__init__(
|
|
600
|
+
seed=seed,
|
|
601
|
+
instance=instance,
|
|
602
|
+
fixed_config=fixed_config,
|
|
603
|
+
navigation_config={
|
|
604
|
+
"application": "Self-Service",
|
|
605
|
+
"module": "Service Catalog",
|
|
606
|
+
},
|
|
607
|
+
level=level,
|
|
608
|
+
task=OrderLoanerLaptopTask(
|
|
609
|
+
seed=seed, instance=instance, used_in_level_2=(level == 2), is_validated=True
|
|
610
|
+
),
|
|
611
|
+
)
|
|
612
|
+
self.task_description = "Order a loaner laptop from the service catalog with the required configuration if applicable. \n"
|
|
613
|
+
self.short_description = "Order a loaner laptop from the service catalog"
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
class NavigateAndFilterAssetListTask(NavigateAndDoTask):
|
|
617
|
+
def __init__(
|
|
618
|
+
self,
|
|
619
|
+
seed: int = None,
|
|
620
|
+
instance: SNowInstance = None,
|
|
621
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
622
|
+
level: int = 2,
|
|
623
|
+
list_name: str = "alm_asset",
|
|
624
|
+
) -> None:
|
|
625
|
+
"""
|
|
626
|
+
Navigate to the user list page and filter the list based on a specific criteria.
|
|
627
|
+
|
|
628
|
+
Attributes:
|
|
629
|
+
-----------
|
|
630
|
+
task_description: str
|
|
631
|
+
The start of the task description to be completed.
|
|
632
|
+
short_description: str
|
|
633
|
+
A short description of the task to be completed. "Filter the asset list"
|
|
634
|
+
"""
|
|
635
|
+
super().__init__(
|
|
636
|
+
seed=seed,
|
|
637
|
+
instance=instance,
|
|
638
|
+
fixed_config=fixed_config,
|
|
639
|
+
navigation_config={
|
|
640
|
+
"application": "Asset",
|
|
641
|
+
"module": "Portfolios > All Assets",
|
|
642
|
+
},
|
|
643
|
+
level=level,
|
|
644
|
+
task=FilterAssetListTask(
|
|
645
|
+
seed=seed,
|
|
646
|
+
instance=instance,
|
|
647
|
+
used_in_level_2=(level == 2),
|
|
648
|
+
is_validated=True,
|
|
649
|
+
list_name=list_name,
|
|
650
|
+
),
|
|
651
|
+
)
|
|
652
|
+
self.task_description = "Filter the asset list - in Asset > Portflios > All Assets - based on specific criteria. \n"
|
|
653
|
+
self.short_description = "Filter the asset list."
|
|
654
|
+
self.list_name = list_name
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
class NavigateAndFilterUserListTask(NavigateAndDoTask):
|
|
658
|
+
def __init__(
|
|
659
|
+
self,
|
|
660
|
+
seed: int = None,
|
|
661
|
+
instance: SNowInstance = None,
|
|
662
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
663
|
+
level: int = 2,
|
|
664
|
+
list_name: str = "user",
|
|
665
|
+
) -> None:
|
|
666
|
+
"""
|
|
667
|
+
Navigate to the user list page and filter the list based on a specific criteria.
|
|
668
|
+
|
|
669
|
+
Attributes:
|
|
670
|
+
-----------
|
|
671
|
+
task_description: str
|
|
672
|
+
The start of the task description to be completed.
|
|
673
|
+
short_description: str
|
|
674
|
+
A short description of the task to be completed. "Filter the user list"
|
|
675
|
+
"""
|
|
676
|
+
super().__init__(
|
|
677
|
+
seed=seed,
|
|
678
|
+
instance=instance,
|
|
679
|
+
fixed_config=fixed_config,
|
|
680
|
+
navigation_config={
|
|
681
|
+
"application": "Organization",
|
|
682
|
+
"module": "Users",
|
|
683
|
+
},
|
|
684
|
+
level=level,
|
|
685
|
+
task=FilterUserListTask(
|
|
686
|
+
seed=seed,
|
|
687
|
+
instance=instance,
|
|
688
|
+
used_in_level_2=(level == 2),
|
|
689
|
+
is_validated=True,
|
|
690
|
+
list_name=list_name,
|
|
691
|
+
),
|
|
692
|
+
)
|
|
693
|
+
self.task_description = "Filter the user list based on specific criteria. \n"
|
|
694
|
+
self.short_description = "Filter the user list."
|
|
695
|
+
self.list_name = list_name
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
class NavigateAndFilterIncidentListTask(NavigateAndDoTask):
|
|
699
|
+
def __init__(
|
|
700
|
+
self,
|
|
701
|
+
seed: int = None,
|
|
702
|
+
instance: SNowInstance = None,
|
|
703
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
704
|
+
level: int = 2,
|
|
705
|
+
list_name: str = "incident",
|
|
706
|
+
) -> None:
|
|
707
|
+
"""
|
|
708
|
+
Navigate to the incident list page and filter the list based on a specific criteria.
|
|
709
|
+
|
|
710
|
+
Attributes:
|
|
711
|
+
-----------
|
|
712
|
+
task_description: str
|
|
713
|
+
The start of the task description to be completed.
|
|
714
|
+
short_description: str
|
|
715
|
+
A short description of the task to be completed. "Filter the incident list"
|
|
716
|
+
"""
|
|
717
|
+
super().__init__(
|
|
718
|
+
seed=seed,
|
|
719
|
+
instance=instance,
|
|
720
|
+
fixed_config=fixed_config,
|
|
721
|
+
navigation_config={
|
|
722
|
+
"application": "Service Desk",
|
|
723
|
+
"module": "Incidents",
|
|
724
|
+
},
|
|
725
|
+
level=level,
|
|
726
|
+
task=FilterIncidentListTask(
|
|
727
|
+
seed=seed,
|
|
728
|
+
instance=instance,
|
|
729
|
+
used_in_level_2=(level == 2),
|
|
730
|
+
is_validated=True,
|
|
731
|
+
list_name=list_name,
|
|
732
|
+
),
|
|
733
|
+
)
|
|
734
|
+
self.task_description = "Filter the incident list based on specific criteria. \n"
|
|
735
|
+
self.short_description = "Filter the incident list."
|
|
736
|
+
self.list_name = list_name
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
class NavigateAndFilterChangeRequestListTask(NavigateAndDoTask):
|
|
740
|
+
def __init__(
|
|
741
|
+
self,
|
|
742
|
+
seed: int = None,
|
|
743
|
+
instance: SNowInstance = None,
|
|
744
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
745
|
+
level: int = 2,
|
|
746
|
+
list_name: str = "change_request",
|
|
747
|
+
) -> None:
|
|
748
|
+
"""
|
|
749
|
+
Navigate to the change request list page and filter the list based on a specific criteria.
|
|
750
|
+
|
|
751
|
+
Attributes:
|
|
752
|
+
-----------
|
|
753
|
+
task_description: str
|
|
754
|
+
The start of the task description to be completed.
|
|
755
|
+
short_description: str
|
|
756
|
+
A short description of the task to be completed. "Filter the change request list"
|
|
757
|
+
"""
|
|
758
|
+
super().__init__(
|
|
759
|
+
seed=seed,
|
|
760
|
+
instance=instance,
|
|
761
|
+
fixed_config=fixed_config,
|
|
762
|
+
navigation_config={
|
|
763
|
+
"application": "Change",
|
|
764
|
+
"module": "All",
|
|
765
|
+
},
|
|
766
|
+
level=level,
|
|
767
|
+
task=FilterChangeRequestListTask(
|
|
768
|
+
seed=seed,
|
|
769
|
+
instance=instance,
|
|
770
|
+
used_in_level_2=(level == 2),
|
|
771
|
+
is_validated=True,
|
|
772
|
+
list_name=list_name,
|
|
773
|
+
),
|
|
774
|
+
)
|
|
775
|
+
self.task_description = "Filter the change request list based on specific criteria. \n"
|
|
776
|
+
self.short_description = "Filter the change request list."
|
|
777
|
+
self.list_name = list_name
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
class NavigateAndFilterHardwareListTask(NavigateAndDoTask):
|
|
781
|
+
def __init__(
|
|
782
|
+
self,
|
|
783
|
+
seed: int = None,
|
|
784
|
+
instance: SNowInstance = None,
|
|
785
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
786
|
+
level: int = 2,
|
|
787
|
+
list_name: str = "hardware_asset",
|
|
788
|
+
) -> None:
|
|
789
|
+
"""
|
|
790
|
+
Navigate to the hardware asset list page and filter the list based on a specific criteria.
|
|
791
|
+
|
|
792
|
+
Attributes:
|
|
793
|
+
-----------
|
|
794
|
+
task_description: str
|
|
795
|
+
The start of the task description to be completed.
|
|
796
|
+
short_description: str
|
|
797
|
+
A short description of the task to be completed. "Filter the hardware asset list"
|
|
798
|
+
"""
|
|
799
|
+
super().__init__(
|
|
800
|
+
seed=seed,
|
|
801
|
+
instance=instance,
|
|
802
|
+
fixed_config=fixed_config,
|
|
803
|
+
navigation_config={
|
|
804
|
+
"application": "Asset",
|
|
805
|
+
"module": "Portfolios > Hardware Assets",
|
|
806
|
+
},
|
|
807
|
+
level=level,
|
|
808
|
+
task=FilterHardwareListTask(
|
|
809
|
+
seed=seed,
|
|
810
|
+
instance=instance,
|
|
811
|
+
used_in_level_2=(level == 2),
|
|
812
|
+
is_validated=True,
|
|
813
|
+
list_name=list_name,
|
|
814
|
+
),
|
|
815
|
+
)
|
|
816
|
+
self.task_description = "Filter the hardware asset list based on specific criteria. \n"
|
|
817
|
+
self.short_description = "Filter the hardware asset list."
|
|
818
|
+
self.list_name = list_name
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
class NavigateAndFilterServiceCatalogItemListTask(NavigateAndDoTask):
|
|
822
|
+
def __init__(
|
|
823
|
+
self,
|
|
824
|
+
seed: int = None,
|
|
825
|
+
instance: SNowInstance = None,
|
|
826
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
827
|
+
level: int = 2,
|
|
828
|
+
list_name: str = "service_catalog_item",
|
|
829
|
+
) -> None:
|
|
830
|
+
"""
|
|
831
|
+
Navigate to the service catalog item list page and filter the list based on a specific criteria.
|
|
832
|
+
|
|
833
|
+
Attributes:
|
|
834
|
+
-----------
|
|
835
|
+
task_description: str
|
|
836
|
+
The start of the task description to be completed.
|
|
837
|
+
short_description: str
|
|
838
|
+
A short description of the task to be completed. "Filter the service catalog item list"
|
|
839
|
+
"""
|
|
840
|
+
super().__init__(
|
|
841
|
+
seed=seed,
|
|
842
|
+
instance=instance,
|
|
843
|
+
fixed_config=fixed_config,
|
|
844
|
+
navigation_config={
|
|
845
|
+
"application": "Service Catalog",
|
|
846
|
+
"module": "Catalog Definitions > Maintain Items",
|
|
847
|
+
},
|
|
848
|
+
level=level,
|
|
849
|
+
task=FilterServiceCatalogItemListTask(
|
|
850
|
+
seed=seed,
|
|
851
|
+
instance=instance,
|
|
852
|
+
used_in_level_2=(level == 2),
|
|
853
|
+
is_validated=True,
|
|
854
|
+
list_name=list_name,
|
|
855
|
+
),
|
|
856
|
+
)
|
|
857
|
+
self.task_description = (
|
|
858
|
+
"Filter the service catalog item list based on specific criteria. \n"
|
|
859
|
+
)
|
|
860
|
+
self.short_description = "Filter the service catalog item list."
|
|
861
|
+
self.list_name = list_name
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
class NavigateAndSortAssetListTask(NavigateAndDoTask):
|
|
865
|
+
def __init__(
|
|
866
|
+
self,
|
|
867
|
+
seed: int = None,
|
|
868
|
+
instance: SNowInstance = None,
|
|
869
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
870
|
+
level: int = 2,
|
|
871
|
+
list_name: str = "alm_asset",
|
|
872
|
+
) -> None:
|
|
873
|
+
"""
|
|
874
|
+
Navigate to the user list page and sort the list based on a specific criteria.
|
|
875
|
+
|
|
876
|
+
Attributes:
|
|
877
|
+
-----------
|
|
878
|
+
task_description: str
|
|
879
|
+
The start of the task description to be completed.
|
|
880
|
+
short_description: str
|
|
881
|
+
A short description of the task to be completed. "Sort the asset list"
|
|
882
|
+
"""
|
|
883
|
+
super().__init__(
|
|
884
|
+
seed=seed,
|
|
885
|
+
instance=instance,
|
|
886
|
+
fixed_config=fixed_config,
|
|
887
|
+
navigation_config={
|
|
888
|
+
"application": "Asset",
|
|
889
|
+
"module": "Portfolios > All Assets",
|
|
890
|
+
},
|
|
891
|
+
level=level,
|
|
892
|
+
task=SortAssetListTask(
|
|
893
|
+
seed=seed,
|
|
894
|
+
instance=instance,
|
|
895
|
+
used_in_level_2=(level == 2),
|
|
896
|
+
is_validated=True,
|
|
897
|
+
list_name=list_name,
|
|
898
|
+
),
|
|
899
|
+
)
|
|
900
|
+
self.task_description = "Sort the asset list - in Asset > Portflios > All Assets - based on specific criteria. \n"
|
|
901
|
+
self.short_description = "Sort the asset list."
|
|
902
|
+
self.list_name = list_name
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
class NavigateAndSortUserListTask(NavigateAndDoTask):
|
|
906
|
+
def __init__(
|
|
907
|
+
self,
|
|
908
|
+
seed: int = None,
|
|
909
|
+
instance: SNowInstance = None,
|
|
910
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
911
|
+
level: int = 2,
|
|
912
|
+
list_name: str = "user",
|
|
913
|
+
) -> None:
|
|
914
|
+
"""
|
|
915
|
+
Navigate to the user list page and sort the list based on a specific criteria.
|
|
916
|
+
|
|
917
|
+
Attributes:
|
|
918
|
+
-----------
|
|
919
|
+
task_description: str
|
|
920
|
+
The start of the task description to be completed.
|
|
921
|
+
short_description: str
|
|
922
|
+
A short description of the task to be completed. "Sort the user list"
|
|
923
|
+
"""
|
|
924
|
+
super().__init__(
|
|
925
|
+
seed=seed,
|
|
926
|
+
instance=instance,
|
|
927
|
+
fixed_config=fixed_config,
|
|
928
|
+
navigation_config={
|
|
929
|
+
"application": "Organization",
|
|
930
|
+
"module": "Users",
|
|
931
|
+
},
|
|
932
|
+
level=level,
|
|
933
|
+
task=SortUserListTask(
|
|
934
|
+
seed=seed,
|
|
935
|
+
instance=instance,
|
|
936
|
+
used_in_level_2=(level == 2),
|
|
937
|
+
is_validated=True,
|
|
938
|
+
list_name=list_name,
|
|
939
|
+
),
|
|
940
|
+
)
|
|
941
|
+
self.task_description = "Sort the user list based on specific criteria. \n"
|
|
942
|
+
self.short_description = "Sort the user list."
|
|
943
|
+
self.list_name = list_name
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
class NavigateAndSortIncidentListTask(NavigateAndDoTask):
|
|
947
|
+
def __init__(
|
|
948
|
+
self,
|
|
949
|
+
seed: int = None,
|
|
950
|
+
instance: SNowInstance = None,
|
|
951
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
952
|
+
level: int = 2,
|
|
953
|
+
list_name: str = "incident",
|
|
954
|
+
) -> None:
|
|
955
|
+
"""
|
|
956
|
+
Navigate to the incident list page and sort the list based on a specific criteria.
|
|
957
|
+
|
|
958
|
+
Attributes:
|
|
959
|
+
-----------
|
|
960
|
+
task_description: str
|
|
961
|
+
The start of the task description to be completed.
|
|
962
|
+
short_description: str
|
|
963
|
+
A short description of the task to be completed. "Sort the incident list"
|
|
964
|
+
"""
|
|
965
|
+
super().__init__(
|
|
966
|
+
seed=seed,
|
|
967
|
+
instance=instance,
|
|
968
|
+
fixed_config=fixed_config,
|
|
969
|
+
navigation_config={
|
|
970
|
+
"application": "Service Desk",
|
|
971
|
+
"module": "Incidents",
|
|
972
|
+
},
|
|
973
|
+
level=level,
|
|
974
|
+
task=SortIncidentListTask(
|
|
975
|
+
seed=seed,
|
|
976
|
+
instance=instance,
|
|
977
|
+
used_in_level_2=(level == 2),
|
|
978
|
+
is_validated=True,
|
|
979
|
+
list_name=list_name,
|
|
980
|
+
),
|
|
981
|
+
)
|
|
982
|
+
self.task_description = "Sort the incident list based on specific criteria. \n"
|
|
983
|
+
self.short_description = "Sort the incident list."
|
|
984
|
+
self.list_name = list_name
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
class NavigateAndSortChangeRequestListTask(NavigateAndDoTask):
|
|
988
|
+
def __init__(
|
|
989
|
+
self,
|
|
990
|
+
seed: int = None,
|
|
991
|
+
instance: SNowInstance = None,
|
|
992
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
993
|
+
level: int = 2,
|
|
994
|
+
list_name: str = "change_request",
|
|
995
|
+
) -> None:
|
|
996
|
+
"""
|
|
997
|
+
Navigate to the change request list page and sort the list based on a specific criteria.
|
|
998
|
+
|
|
999
|
+
Attributes:
|
|
1000
|
+
-----------
|
|
1001
|
+
task_description: str
|
|
1002
|
+
The start of the task description to be completed.
|
|
1003
|
+
short_description: str
|
|
1004
|
+
A short description of the task to be completed. "Sort the change request list"
|
|
1005
|
+
"""
|
|
1006
|
+
super().__init__(
|
|
1007
|
+
seed=seed,
|
|
1008
|
+
instance=instance,
|
|
1009
|
+
fixed_config=fixed_config,
|
|
1010
|
+
navigation_config={
|
|
1011
|
+
"application": "Change",
|
|
1012
|
+
"module": "All",
|
|
1013
|
+
},
|
|
1014
|
+
level=level,
|
|
1015
|
+
task=SortChangeRequestListTask(
|
|
1016
|
+
seed=seed,
|
|
1017
|
+
instance=instance,
|
|
1018
|
+
used_in_level_2=(level == 2),
|
|
1019
|
+
is_validated=True,
|
|
1020
|
+
list_name=list_name,
|
|
1021
|
+
),
|
|
1022
|
+
)
|
|
1023
|
+
self.task_description = "Sort the change request list based on specific criteria. \n"
|
|
1024
|
+
self.short_description = "Sort the change request list."
|
|
1025
|
+
self.list_name = list_name
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
class NavigateAndSortHardwareListTask(NavigateAndDoTask):
|
|
1029
|
+
def __init__(
|
|
1030
|
+
self,
|
|
1031
|
+
seed: int = None,
|
|
1032
|
+
instance: SNowInstance = None,
|
|
1033
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
1034
|
+
level: int = 2,
|
|
1035
|
+
list_name: str = "hardware_asset",
|
|
1036
|
+
) -> None:
|
|
1037
|
+
"""
|
|
1038
|
+
Navigate to the hardware asset list page and sort the list based on a specific criteria.
|
|
1039
|
+
|
|
1040
|
+
Attributes:
|
|
1041
|
+
-----------
|
|
1042
|
+
task_description: str
|
|
1043
|
+
The start of the task description to be completed.
|
|
1044
|
+
short_description: str
|
|
1045
|
+
A short description of the task to be completed. "Sort the hardware asset list"
|
|
1046
|
+
"""
|
|
1047
|
+
super().__init__(
|
|
1048
|
+
seed=seed,
|
|
1049
|
+
instance=instance,
|
|
1050
|
+
fixed_config=fixed_config,
|
|
1051
|
+
navigation_config={
|
|
1052
|
+
"application": "Asset",
|
|
1053
|
+
"module": "Portfolios > Hardware Assets",
|
|
1054
|
+
},
|
|
1055
|
+
level=level,
|
|
1056
|
+
task=SortHardwareListTask(
|
|
1057
|
+
seed=seed,
|
|
1058
|
+
instance=instance,
|
|
1059
|
+
used_in_level_2=(level == 2),
|
|
1060
|
+
is_validated=True,
|
|
1061
|
+
list_name=list_name,
|
|
1062
|
+
),
|
|
1063
|
+
)
|
|
1064
|
+
self.task_description = "Sort the hardware asset list based on specific criteria. \n"
|
|
1065
|
+
self.short_description = "Sort the hardware asset list."
|
|
1066
|
+
self.list_name = list_name
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
class NavigateAndSortServiceCatalogItemListTask(NavigateAndDoTask):
|
|
1070
|
+
def __init__(
|
|
1071
|
+
self,
|
|
1072
|
+
seed: int = None,
|
|
1073
|
+
instance: SNowInstance = None,
|
|
1074
|
+
fixed_config: list[AbstractServiceNowTask] = None,
|
|
1075
|
+
level: int = 2,
|
|
1076
|
+
list_name: str = "service_catalog_item",
|
|
1077
|
+
) -> None:
|
|
1078
|
+
"""
|
|
1079
|
+
Navigate to the service catalog item list page and sort the list based on a specific criteria.
|
|
1080
|
+
|
|
1081
|
+
Attributes:
|
|
1082
|
+
-----------
|
|
1083
|
+
task_description: str
|
|
1084
|
+
The start of the task description to be completed.
|
|
1085
|
+
short_description: str
|
|
1086
|
+
A short description of the task to be completed. "Sort the service catalog item list"
|
|
1087
|
+
"""
|
|
1088
|
+
super().__init__(
|
|
1089
|
+
seed=seed,
|
|
1090
|
+
instance=instance,
|
|
1091
|
+
fixed_config=fixed_config,
|
|
1092
|
+
navigation_config={
|
|
1093
|
+
"application": "Service Catalog",
|
|
1094
|
+
"module": "Catalog Definitions > Maintain Items",
|
|
1095
|
+
},
|
|
1096
|
+
level=level,
|
|
1097
|
+
task=SortServiceCatalogItemListTask(
|
|
1098
|
+
seed=seed,
|
|
1099
|
+
instance=instance,
|
|
1100
|
+
used_in_level_2=(level == 2),
|
|
1101
|
+
is_validated=True,
|
|
1102
|
+
list_name=list_name,
|
|
1103
|
+
),
|
|
1104
|
+
)
|
|
1105
|
+
self.task_description = "Sort the service catalog item list based on specific criteria. \n"
|
|
1106
|
+
self.short_description = "Sort the service catalog item list."
|
|
1107
|
+
self.list_name = list_name
|
|
1108
|
+
|
|
1109
|
+
|
|
1110
|
+
local_vars = locals().copy()
|
|
1111
|
+
|
|
1112
|
+
__TASKS__ = [
|
|
1113
|
+
var
|
|
1114
|
+
for var in local_vars.values()
|
|
1115
|
+
if isinstance(var, type) and issubclass(var, NavigateAndDoTask) and var is not NavigateAndDoTask
|
|
1116
|
+
]
|
|
1117
|
+
|
|
1118
|
+
NAVIGATE_AND_CREATE_TASKS = [
|
|
1119
|
+
NavigateAndCreateUserTask,
|
|
1120
|
+
NavigateAndCreateIncidentTask,
|
|
1121
|
+
NavigateAndCreateChangeRequestTask,
|
|
1122
|
+
NavigateAndCreateProblemTask,
|
|
1123
|
+
NavigateAndCreateHardwareAssetTask,
|
|
1124
|
+
]
|
|
1125
|
+
NAVIGATE_AND_ORDER_TASKS = [
|
|
1126
|
+
NavigateAndOrderStandardLaptopTask,
|
|
1127
|
+
NavigateAndOrderSalesLaptopTask,
|
|
1128
|
+
NavigateAndOrderDeveloperLaptopTask,
|
|
1129
|
+
NavigateAndOrderIpadProTask,
|
|
1130
|
+
NavigateAndOrderIpadMiniTask,
|
|
1131
|
+
NavigateAndOrderAppleWatchTask,
|
|
1132
|
+
NavigateAndOrderAppleMacBookPro15Task,
|
|
1133
|
+
NavigateAndOrderDevelopmentLaptopPCTask,
|
|
1134
|
+
NavigateAndOrderLoanerLaptopTask,
|
|
1135
|
+
]
|
|
1136
|
+
NAVIGATE_AND_FILTER_TASKS = [
|
|
1137
|
+
NavigateAndFilterAssetListTask,
|
|
1138
|
+
NavigateAndFilterUserListTask,
|
|
1139
|
+
NavigateAndFilterIncidentListTask,
|
|
1140
|
+
NavigateAndFilterChangeRequestListTask,
|
|
1141
|
+
NavigateAndFilterHardwareListTask,
|
|
1142
|
+
NavigateAndFilterServiceCatalogItemListTask,
|
|
1143
|
+
]
|
|
1144
|
+
NAVIGATE_AND_SORT_TASKS = [
|
|
1145
|
+
NavigateAndSortAssetListTask,
|
|
1146
|
+
NavigateAndSortUserListTask,
|
|
1147
|
+
NavigateAndSortIncidentListTask,
|
|
1148
|
+
NavigateAndSortChangeRequestListTask,
|
|
1149
|
+
NavigateAndSortHardwareListTask,
|
|
1150
|
+
NavigateAndSortServiceCatalogItemListTask,
|
|
1151
|
+
]
|