playtender.robot
39.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
*** Settings ***
Resource playtender_common.robot
Resource playtender_plan.robot
Resource playtender_tender.robot
*** Variables ***
*** Keywords ***
Підготувати клієнт для користувача
[Arguments] ${username}
[Documentation] Відкриває переглядач на потрібній сторінці, готує api wrapper, тощо.
init environment ${username}
open browser ${broker_baseurl} ${broker_browser} alias=${broker_username}
add cookie robottest 1 # for detecting from site side
set window size @{browser_default_size}
set window position @{browser_default_position}
set site language by code ${broker_language_code}
login to site ${USERS.users['${broker_username}']}
Підготувати дані для оголошення тендера
[Arguments] ${username} ${tender_data} ${role_name}
[Documentation] Адаптувати початкові дані для створення тендера. Наприклад, змінити дані про procuringEntity на дані
... про користувача tender_owner на майданчику. Перевіряючи значення аргументу role_name, можна адаптувати
... різні дані для різних ролей (наприклад, необхідно тільки для ролі tender_owner забрати з початкових
... даних поле mode: test, а для інших ролей не потрібно робити нічого). Це ключове слово викликається в
... циклі для кожної ролі, яка бере участь в поточному сценарії. З ключового слова потрібно повернути
... адаптовані дані tender_data. Різниця між початковими даними і кінцевими буде виведена в консоль під
... час запуску тесту.
${tender_data_keys} = get dictionary keys ${tender_data['data']}
run keyword if ${is_test_role_owner} and 'procuringEntity' in ${tender_data_keys} prepare procuring entity data ${tender_data['data']['procuringEntity']}
#run keyword if ${is_test_role_owner} and 'buyers' in ${tender_data_keys} prepare buyers data ${tender_data['data']['buyers']}
[Return] ${tender_data}
########################################################################################################################
#################################################### PLAN KEYWORDS #####################################################
########################################################################################################################
Створити план
[Arguments] ${user} ${plan_data}
[Documentation] Створити план з початковими даними plan_data. Повернути uaid створеного плану.
# check buyers
${buyers_count} = get length ${plan_data['data']['buyers']}
run keyword if ${buyers_count} != 1 fail Buyer must be one
open new plan form
fill plan form ${plan_data['data']}
save plan form and wait synchronization
${plan_uaid} = get text ${plan_uaid_text_locator}
[Return] ${plan_uaid}
Оновити сторінку з планом
[Arguments] ${username} ${plan_uaid}
[Documentation] Оновити сторінку з планом для отримання потенційно оновлених даних.
open plan page by uaid ${plan_uaid}
Пошук плану по ідентифікатору
[Arguments] ${username} ${plan_uaid}
[Documentation] Знайти план за зазначеним plan_uaid.
open plan search form
input to search form and wait results ${plan_search_form_query_input_locator} ${plan_uaid} ${plan_search_form_result_locator_tpl}
Внести зміни в план
[Arguments] ${username} ${plan_uaid} ${fieldname} ${fieldvalue}
[Documentation] Змінити значення поля fieldname на fieldvalue для плана із зазначеним plan_uaid.
${plan_data} = generate dictionary from field path and value ${fieldname} ${fieldvalue}
open plan form by uaid ${plan_uaid}
fill plan form ${plan_data}
save plan form and wait synchronization
Додати предмет закупівлі в план
[Arguments] ${username} ${plan_uaid} ${item_data}
[Documentation] Додати дані про предмет item до плану plan_uaid.
open plan form by uaid ${plan_uaid}
${items} = create list ${item_data}
fill plan form items ${items}
save plan form and wait synchronization
Видалити предмет закупівлі плану
[Arguments] ${username} ${plan_uaid} ${item_id}
[Documentation] Видалити з плану plan_uaid предмет з item_id в описі.
open plan form by uaid ${plan_uaid}
${delete_item_btn_locator} = replace string ${plan_form_remove_item_btn_locator_tpl} %title% ${item_id}
click removing form item and wait success result ${delete_item_btn_locator}
save plan form and wait synchronization
Отримати інформацію із плану
[Arguments] ${username} ${plan_uaid} ${field_name}
[Documentation] Отримати інформацію із плану, користуючись ідентіфікатором плану та назвою поля ${field_name}.
open plan page by uaid ${plan_uaid} ${False}
${field_name} = set variable plan.${field_name}.value
${value} = get field_value by field_name on opened page ${field_name}
[Return] ${value}
########################################################################################################################
################################################### TENDER KEYWORDS ####################################################
########################################################################################################################
Створити тендер
[Arguments] ${user} ${tender_data}
[Documentation] Створити тендер з початковими даними tender_data. Повернути
... uaid створеного тендера.
${tender_prepared_data} = prepare tender data ${tender_data['data']}
##### BOF - TMP for negotiation milestone 1 lot#####
Set Global Variable ${td_railway_crutch} ${tender_data}
##### EOF - TMP #####
open new tender form
fill tender form ${tender_prepared_data}
submit form and check result ${tender_form_submit_btn_locator} ${tender_form_submit_success_msg} ${tender_created_checker_element_locator}
wait until page does not contain element with reloading ${tender_sync_element_locator}
wait until page contains element with reloading ${tender_uaid_text_locator}
${tender_uaid} = get text ${tender_uaid_text_locator}
[Return] ${tender_uaid}
Оновити сторінку з тендером
[Arguments] ${username} ${$tender_uaid}
[Documentation] Оновити сторінку з тендером для отримання потенційно оновлених даних.
open tender page by uaid ${$tender_uaid}
Пошук тендера по ідентифікатору
[Arguments] ${username} ${tender_uaid}
[Documentation] Знайти тендер з uaid рівним tender_uaid.
open tender search form
input to search form and wait results ${tender_search_form_query_input_locator} ${tender_uaid} ${tender_search_form_result_locator_tpl}
Отримати інформацію із тендера
[Arguments] ${username} ${tender_uaid} ${field_name}
[Documentation] Отримати значення поля field_name для тендера tender_uaid.
open tender page by uaid ${tender_uaid}
wait until page does not contain element with reloading ${tender_sync_element_locator}
${field_name} = set variable tender.${field_name}.value
${value} = get field_value by field_name on opened page ${field_name}
[Return] ${value}
Внести зміни в тендер
[Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
[Documentation] Змінити значення поля fieldname на fieldvalue для плана із зазначеним plan_uaid.
${tender_data} = generate dictionary from field path and value ${fieldname} ${fieldvalue}
open tender form by uaid ${tender_uaid}
fill tender form ${tender_data}
save tender form and wait synchronization
Завантажити документ
[Arguments] ${username} ${filepath} ${tender_uaid}
[Documentation] Завантажити документ, який знаходиться по шляху filepath,
... до тендера tender_uaid.
open tender form by uaid ${tender_uaid}
add document in tender ${filepath}
save tender form and wait synchronization
########################################################################################################################
################################################### ITEM KEYWORDS ####################################################
########################################################################################################################
Додати предмет закупівлі
[Arguments] ${username} ${tender_uaid} ${item_data}
[Documentation] Додати дані про предмет item до тендера tender_uaid.
open tender form by uaid ${tender_uaid}
${items} = create list ${item_data}
fill tender form items ${items}
save tender form and wait synchronization
Отримати інформацію із предмету
[Arguments] ${username} ${tender_uaid} ${item_id} ${field_name}
[Documentation] Отримати значення поля field_name з предмету з item_id в описі для тендера tender_uaid.
open tender page by uaid ${tender_uaid}
#перейти на соответствующий предмет в первом лоте, например, первый
run keyword and ignore error click visible element ${tender_lot_1_tabs_item_btn_locator}
${return_value} = get value from item ${item_id} ${field_name}
[return] ${return_value}
Видалити предмет закупівлі
[Arguments] ${username} ${tender_uaid} ${item_id} ${lot_id}=Empty
[Documentation] Видалити з тендера tender_uaid предмет з item_id в описі
... (предмет може бути прив'язаним до лоту з lot_id в описі,
... якщо lot_id != Empty).
open tender form by uaid ${tender_uaid}
wait until page does not contain element with reloading ${tender_sync_element_locator}
${tender_form_lots_remove_item_btn_locator} = replace string ${tender_form_lots_remove_item_btn_locator_tpl} %item_id% ${item_id}
wait until page contains element with reloading ${tender_form_lots_remove_item_btn_locator}
click visible element ${tender_form_lots_remove_item_btn_locator}
Wait Until Page Contains ${tender_lots_remove_item_form_submit_success_msg} 60
click visible element ${not_alert_opened_close_btn_locator}
run keyword and ignore error click visible element ${not_alert_opened_close_btn_locator}
capture page screenshot
Wait Until Page Does Not Contain ${tender_lots_remove_item_form_submit_success_msg} 10
capture page screenshot
save tender form and wait synchronization
########################################################################################################################
################################################### END ITEM KEYWORDS #################################################
########################################################################################################################
########################################################################################################################
################################################### LOT KEYWORDS ####################################################
########################################################################################################################
Створити лот
[Arguments] ${username} ${tender_uaid} ${lot}
[Documentation] Додати лот lot до тендера tender_uaid.
Отримати інформацію із лоту
[Arguments] ${username} ${tender_uaid} ${lot_id} ${field_name}
[Documentation] Отримати значення поля field_name з лоту з lot_id в описі для тендера tender_uaid.
open tender page by uaid ${tender_uaid}
#перейти на соответствующий лот, например, первый
${tender_lot_switch_tabs_lot_btn_locator} = replace string ${tender_lot_switch_tabs_lot_btn_locator_tpl} %lot_id% ${lot_id}
click visible element ${tender_lot_switch_tabs_lot_btn_locator}
${field_name} = set variable tender.lot.${field_name}.value
# ${value} = get value from lot ${lot_id} ${field_name}
${value} = get field_value by field_name on opened page ${field_name}
[Return] ${value}
Завантажити документ в лот
[Arguments] ${username} ${filepath} ${tender_uaid} ${lot_id}
[Documentation] Завантажити документ, який знаходиться по шляху filepath,
... до лоту з lot_id в описі для тендера tender_uaid.
open tender form by uaid ${tender_uaid}
add document in lot ${filepath} ${lot_id}
save tender form and wait synchronization
Змінити лот
[Arguments] ${username} ${tender_uaid} ${lot_id} ${fieldname} ${fieldvalue}
[Documentation] Змінити значення поля fieldname лоту з lot_id в описі
... для тендера tender_uaid на fieldvalue.
${tender_data} = generate dictionary from field path and value ${fieldname} ${fieldvalue}
open tender form by uaid ${tender_uaid}
#выбор нужного лота
click visible element ${tender_form_lots_edit_lot1_btn_locator}
wait until popup is visible
fill lot form in opened popup ${tender_data}
submit current visible popup
save tender form and wait synchronization
Додати предмет закупівлі в лот
[Arguments] ${username} ${tender_uaid} ${lot_id} ${item}
[Documentation] Додати предмет item в лот з lot_id в описі для тендера tender_uaid.
open tender form by uaid ${tender_uaid}
click visible element ${tender_form_lots_add_item_btn_locator}
${items} = create list ${item}
fill tender form items ${items}
save tender form and wait synchronization
########################################################################################################################
################################################### END LOT KEYWORDS #################################################
########################################################################################################################
########################################################################################################################
################################################### FEATIRE KEYWORDS #############################################
########################################################################################################################
Додати неціновий показник на тендер
[Arguments] ${username} ${tender_uaid} ${feature}
[Documentation] Додати дані feature про неціновий показник до тендера tender_uaid.
open tender form by uaid ${tender_uaid}
fill tender form features2 ${feature} ${tender_form_general_panel_update_feature_btn_locator}
save tender form and wait synchronization
Додати неціновий показник на предмет
[Arguments] ${username} ${tender_uaid} ${feature} ${item_id}
[Documentation] Додати дані feature про неціновий показник до предмету з item_id в описі для тендера tender_uaid.
open tender form by uaid ${tender_uaid}
fill tender form features2 ${feature} ${tender_form_item_add_feature_btn_locator}
save tender form and wait synchronization
Додати неціновий показник на лот
[Arguments] ${username} ${tender_uaid} ${feature} ${lot_id}
[Documentation] Додати дані feature про неціновий показник до лоту з lot_id в описі для тендера tender_uaid.
open tender form by uaid ${tender_uaid}
fill tender form features2 ${feature} ${tender_update_feature_lot_btn_locator}
save tender form and wait synchronization
Отримати інформацію із нецінового показника
[Arguments] ${username} ${tender_uaid} ${feature_id} ${field_name}
[Documentation] Отримати значення поля field_name з нецінового показника з feature_id в описі для тендера tender_uaid.
open tender page by uaid ${tender_uaid}
wait until page does not contain element with reloading ${tender_sync_element_locator}
${return_value} = get value from features ${feature_id} ${field_name}
[return] ${return_value}
Видалити неціновий показник
[Arguments] ${username} ${tender_uaid} ${feature_id} ${obj_id}=Empty
[Documentation] Видалити неціновий показник з feature_id в описі для тендера tender_uaid.
open tender form by uaid ${tender_uaid}
Run Keyword If '${TEST_NAME}' == 'Можливість видалити неціновий показник на предмет' click visible element ${tender_update_feature_item_btn_locator}
Run Keyword If '${TEST_NAME}' == 'Можливість видалити неціновий показник на лот' click visible element ${tender_update_feature_lot_btn_locator}
Run Keyword If '${TEST_NAME}' == 'Можливість видалити неціновий показник на тендер' click visible element ${tender_update_feature_tender_btn_locator}
wait until popup is visible
${tender_feature_switch_dell_btn_locator} = replace string ${tender_feature_switch_dell_btn_locator_tpl} %feature_id% ${feature_id}
click visible element ${tender_feature_switch_dell_btn_locator}
Wait Until Element Is Visible ${tender_feature_dell_btn_locator} 20
click visible element ${tender_feature_dell_btn_locator}
Wait Until Page Contains ${tender_feature_form_submit_success_msg} 60
click visible element ${not_alert_opened_close_btn_locator}
Wait Until Page Does Not Contain ${tender_feature_form_submit_success_msg} 10
submit current visible popup
save tender form and wait synchronization
########################################################################################################################
################################################### END FEATIRE KEYWORDS #############################################
########################################################################################################################
########################################################################################################################
################################################### QUESTION KEYWORDS #############################################
########################################################################################################################
Відповісти на запитання
[Arguments] ${username} ${tender_uaid} ${answer_data} ${question_id}
[Documentation] Дати відповідь answer_data на запитання з question_id
... в описі для тендера tender_uaid.
open tender form by uaid ${tender_uaid}
answer question ${answer_data} ${question_id}
Задати запитання на предмет
[Arguments] ${username} ${tender_uaid} ${item_id} ${question}
[Documentation] Створити запитання з даними question до предмету з item_id
... в описі для тендера tender_uaid.
add question ${username} ${tender_uaid} item ${item_id} ${question}
Задати запитання на лот
[Arguments] ${username} ${tender_uaid} ${lot_id} ${question}
[Documentation] Створити запитання з даними question до лоту з lot_id
... в описі для тендера tender_uaid.
add question ${username} ${tender_uaid} lot ${lot_id} ${question}
Задати запитання на тендер
[Arguments] ${username} ${tender_uaid} ${question}
[Documentation] Створити запитання з даними question для тендера tender_uaid.
add question ${username} ${tender_uaid} tender null ${question}
Отримати інформацію із запитання
[Arguments] ${username} ${tender_uaid} ${question_id} ${field_name}
[Documentation] Отримати значення поля field_name із запитання з question_id
... в описі для тендера tender_uaid.
open tender page by uaid ${tender_uaid}
${value} = get question information ${question_id} ${field_name}
[Return] ${value}
########################################################################################################################
################################################### END QUESTION KEYWORDS #############################################
########################################################################################################################
########################################################################################################################
################################################### CLAIM KEYWORDS #############################################
########################################################################################################################
Створити вимогу про виправлення умов закупівлі
[Arguments] ${username} ${tender_uaid} ${claim} ${doc_name}
[Documentation] Створити запитання з даними question для тендера tender_uaid.
Run Keyword And Return Створити вимогу ${username} ${tender_uaid} tender null ${claim} ${doc_name}
Створити чернетку вимоги про виправлення умов закупівлі
[Arguments] ${username} ${tender_uaid} ${claim}
[Documentation] Створює вимогу claim про виправлення умов закупівлі
... у статусі claim для тендера tender_uaid. Можна створити
... вимогу як з документом, який знаходиться за шляхом document,
... так і без нього.
Run Keyword And Return Створити вимогу ${username} ${tender_uaid} tender null ${claim} null
Створити вимогу про виправлення умов лоту
[Arguments] ${username} ${tender_uaid} ${claim} ${lot_id} ${doc_name}
[Documentation] Створює вимогу claim про виправлення умов лоту
... у статусі draft для тендера tender_uaid.
Run Keyword And Return Створити вимогу ${username} ${tender_uaid} lot ${lot_id} ${claim} ${doc_name}
Створити чернетку вимоги про виправлення умов лоту
[Arguments] ${username} ${tender_uaid} ${claim} ${lot_id}
[Documentation] Створює вимогу claim про виправлення умов закупівлі
... у статусі draft для тендера tender_uaid.
Run Keyword And Return Створити вимогу ${username} ${tender_uaid} lot ${lot_id} ${claim} null
Створити вимогу про виправлення визначення переможця
[Arguments] ${username} ${tender_uaid} ${claim} ${proposal_id} ${doc_name}
[Documentation] Створює вимогу claim про виправлення визначення переможця
... під номером award_index в статусі claim для тендера tender_uaid. Можна створити вимогу як з документом, який знаходиться за шляхом document, так і без нього.
Run Keyword And Return Створити вимогу ${username} ${tender_uaid} winner ${proposal_id} ${claim} ${doc_name}
Створити чернетку вимоги про виправлення визначення переможця
[Arguments] ${username} ${tender_uaid} ${claim} ${proposal_id}
[Documentation] Створює вимогу claim про виправлення визначення переможця
... під номером award_index в статусі draft для тендера tender_uaid.
Run Keyword And Return Створити вимогу ${username} ${tender_uaid} winner ${proposal_id} ${claim} null
########################################################################################################################
################################################### END CLAIM KEYWORDS #############################################
########################################################################################################################
########################################################################################################################
################################################### BID KEYWORDS #############################################
########################################################################################################################
Подати цінову пропозицію
[Arguments] ${username} ${tender_uaid} ${bid} ${lots_ids} ${features_ids}
[Documentation] Подати цінову пропозицію bid для тендера tender_uaid
... на лоти lots_ids (якщо lots_ids != None) з неціновими
... показниками features_ids (якщо features_ids != None).
open tender page by uaid ${tender_uaid}
fill bid form ${tender_uaid} ${bid} ${lots_ids} ${features_ids}
submit form and check result ${bid_form_submit_btn_locator} ${bid_form_submit_success_msg} ${tender_created_checker_element_locator}
wait until page does not contain element with reloading ${tender_sync_element_locator}
Змінити цінову пропозицію
[Arguments] ${username} ${tender_uaid} ${fieldname} ${fieldvalue}
[Documentation] Змінити поле fieldname на fieldvalue цінової пропозиції користувача
... username для тендера tender_uaid.
open tender form by uaid ${tender_uaid}
fill bid form edit ${fieldname} ${fieldvalue}
submit form and check result ${bid_form_submit_btn_locator} ${bid_form_submit_success_msg} ${tender_created_checker_element_locator}
wait until page does not contain element with reloading ${tender_sync_element_locator}
########################################################################################################################
################################################### END BID KEYWORDS #############################################
########################################################################################################################
################################################### QUALIFICATION KEYWORDS #############################################
########################################################################################################################
########################################################################################################################
################################################### END QUALIFICATION KEYWORDS ########################################
########################################################################################################################
########################################################################################################################
################################################### LIMITED PROCUREMENT KEYWORDS ######################################
########################################################################################################################
########################################################################################################################
################################################### END LIMITED PROCUREMENT KEYWORDS ##################################
########################################################################################################################
########################################################################################################################
################################################### OPEN PROCUREMENT KEYWORDS ####################################
########################################################################################################################
########################################################################################################################
################################################### END OPEN PROCUREMENT KEYWORDS ###############################
########################################################################################################################