Commit b97a76a1b483d07b4a1dc20a5804820cc1b95048

Authored by Playtenders
1 parent 670cdda4

begin rename files

This diff could not be displayed because it is too large.
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_agreement_variables.robot  
5 -Resource playtender_question.robot  
6 -Resource playtender_claim.robot  
7 -Resource playtender_bid.robot  
8 -Resource playtender_viewer.robot  
9 -  
10 -*** Keywords ***  
11 -  
12 -update agreement queue  
13 - [Documentation] запускає оновлення agreement з ЦБД і додає їх в чергу, тобто синхронізація може відбутися не відразу  
14 - ... поточна сторіка повертається  
15 -  
16 - ${current_url} = get location  
17 - go to ${broker_baseurl}/utils/queue-agreement-update  
18 - go to ${current_url}  
19 -  
20 -open agreement search form  
21 - [Documentation] відкриває сторінку з пошуком agreement  
22 -  
23 - open page and wait element by locator ${broker_baseurl}/agreements ${agreement_search_form_locator}  
24 -  
25 -open agreement form by uaid  
26 - [Arguments] ${agreement_uaid}  
27 - [Documentation] відкриття сторінки редагування плану  
28 -  
29 - open agreement page by uaid ${agreement_uaid}  
30 - click visible element and wait until page contains element ${tender_edit_btn_locator} ${tender_form_locator}  
31 -  
32 -open agreement page by uaid  
33 - [Arguments] ${uaid}  
34 - [Documentation] відкриває сторінку з agreement  
35 -  
36 - open site page and wait content element ${broker_baseurl}/agreement/${uaid}  
37 - ${is_agreement_found} = get is element exist ${agreement_view_checker_element_locator}  
38 - return from keyword if ${is_agreement_found} == ${True}  
39 - ${is_agreement_not_found} = get is 404 page  
40 - ${is_needed_to_update_and_wait_sync} = set variable if ${is_test_role_owner} == ${False} and ${is_agreement_not_found} ${True} ${False}  
41 - run keyword if ${is_needed_to_update_and_wait_sync} update agreement queue  
42 - run keyword if ${is_needed_to_update_and_wait_sync} wait until 404 page disappears  
43 - ${is_agreement_found} = get is element exist ${agreement_view_checker_element_locator}  
44 - run keyword if ${is_agreement_found} == ${False} fail Opening agreement page by uaid fails.  
45 -  
46 -save agreement form and wait synchronization  
47 - [Documentation] натискає кнопку "Зберегти" і чекає синхронізації угоди  
48 -  
49 - submit form and check result ${tender_form_submit_btn_locator} ${tender_form_submit_success_msg} ${tender_created_checker_element_locator} ${true}  
50 - wait until page does not contain element with reloading ${agreement_sync_element_locator}  
51 -  
52 -add document in agreement  
53 - [Arguments] ${filepath}  
54 - [Documentation] Завантажити документ, який знаходиться по шляху filepath.  
55 -  
56 - click visible element ${tender_form_general_panel_edit_add_document_btn_locator}  
57 - choose file ${add_file_to_form_locator} ${filepath}  
58 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
59 - submit current visible popup  
60 -  
61 -  
1 -*** Variables ***  
2 -  
3 -${agreement_search_form_locator} = id=agreement-filter-form  
4 -${agreement_search_form_query_input_locator} = jquery=#agreement-filter-form .dynamic-search-query input  
5 -${agreement_search_form_result_locator_tpl} = jquery=#agreement-list .lots__item .lot__characteristic li:contains(%query%)  
6 -  
7 -# agreement view  
8 -${agreement_view_checker_element_locator} = id=agreement-general-info  
9 -${agreement_sync_element_locator} = jquery=#aside-part-pjax .status-label .fa-refresh  
10 -${agreement_uaid_text_locator} = jquery=#agreement-general-info .agreement-id .value  
11 -${agreement_edit_btn_locator} = jquery=#aside-part-pjax a[href*="agreement/update"]  
12 -${agreement_status_value_locator} = jquery=#aside-part-pjax .hidden.opstatus  
13 -#елемент проверки загрузки формы в попапе  
14 -#${popup_dynamic_form_loading_element_locator} = jquery=.fancybox-is-open .btn-add .fa-spin  
15 -${agreement_changes_0_status_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.status.hidden  
16 -${agreement_changes_0_rationaleType_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.rationale-type span.value  
17 -${agreement_changes_0_rationale_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.rationale span.value  
18 -  
19 -${agreement_changes_0_modifications_0_itemId_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-itemId.hidden  
20 -${agreement_changes_0_modifications_0_addend_value_locator} = jquery=.tabs__pane.tabs__pane--visible[id*="tab-agreement-change"] .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-factor.hidden  
21 -  
22 -${agreement_changes_1_rationaleType_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale-type span.value  
23 -${agreement_changes_1_rationale_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale span.value  
24 -  
25 -${agreement_changes_1_modifications_0_itemId_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-itemId.hidden  
26 -${agreement_changes_1_modifications_0_factor_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-factor.hidden  
27 -${agreement_changes_1_status_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(1) .agreement-contract-info-wrapper.info-wrapper .info-row.status.hidden  
28 -  
29 -${agreement_changes_2_rationaleType_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale-type span.value  
30 -${agreement_changes_2_rationale_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale span.value  
31 -  
32 -${agreement_changes_2_modifications_0_itemId_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-itemId.hidden  
33 -${agreement_changes_2_modifications_0_factor_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-factor.hidden  
34 -${agreement_changes_2_status_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(2) .agreement-contract-info-wrapper.info-wrapper .info-row.status.hidden  
35 -  
36 -${agreement_changes_3_rationaleType_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale-type span.value  
37 -${agreement_changes_3_rationale_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.rationale span.value  
38 -  
39 -${agreement_changes_3_modifications_0_itemId_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.itemid span.value  
40 -${agreement_changes_3_modifications_0_factor_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.modification0-factor.hidden  
41 -${agreement_changes_3_status_value_locator} = jquery=.tabs__pane[id*="tab-agreement-change"]:nth(3) .agreement-contract-info-wrapper.info-wrapper .info-row.status.hidden  
42 -  
43 -${agreement_form_refresh_success_msg} = Рамкова угода оновлена.  
44 -${agreement_form_refresh_btn_locator} = jquery=#agreement-general-info a[href*="/utils/agreement-sync"]  
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_variables.robot  
5 -Resource playtender_bid_variables.robot  
6 -  
7 -*** Keywords ***  
8 -  
9 -  
10 -fill bid form  
11 - [Arguments] ${tender_uaid} ${bid} ${lots_ids} ${features_ids}  
12 - [Documentation] Подати цінову пропозицію bid для тендера tender_uaid на лоти lots_ids (якщо lots_ids != None) з неціновими показниками features_ids (якщо features_ids != None).  
13 -  
14 - submit form and check result ${bid_form_refresh_btn_locator} ${bid_form_refresh_success_msg} ${tender_created_checker_element_locator} ${true}  
15 - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}  
16 - ${value} = get from dictionary by keys ${bid.data} value amount  
17 -# ${amount} = run keyword if condition is not none ${value} convert_float_to_string ${bid.data.value.amount}  
18 - run keyword if condition is not none ${value} input number to exist visible input ${bid_form_value_amount_input_locator} ${value}  
19 - capture page screenshot  
20 -# ${lots} = get from dictionary by keys ${data} lots  
21 - run keyword if condition is not none ${lots_ids} fill bid form lots ${bid} ${lots_ids} ${features_ids}  
22 - capture page screenshot  
23 -# run keyword if condition is none ${lots_ids} fill bid form whithout lots ${bid}  
24 -# ${features} = get from dictionary by keys ${data} features  
25 -# run keyword if condition is not none ${features_ids} fill bid form features ${bid} ${tender_form_general_panel_add_feature_btn_locator}  
26 - fill bid required documents_all  
27 - capture page screenshot  
28 -## submit form and check result ${bid_form_submit_btn_locator} ${bid_form_submit_success_msg} ${tender_created_checker_element_locator}  
29 -  
30 -fill bid form lots  
31 - [Arguments] ${bid} ${lots_ids}=${None} ${features_ids}=${None}  
32 - [Documentation] Заповнити лотову цінову пропозицію bid для тендера tender_uaid на лоти lots_ids з неціновими показниками features_ids (якщо features_ids != None).  
33 -  
34 - ${lots} = get from dictionary by keys ${bid.data} lotValues  
35 - ${lots_length} = Get Length ${lots}  
36 - : FOR ${INDEX} IN RANGE 0 ${lots_length}  
37 - \ Run Keyword And Ignore Error run keyword if condition is not none ${lots} input number to exist visible input ${bid_form_value_amount_input_locator} ${lots[${INDEX}].value.amount}  
38 - \ capture page screenshot  
39 - \ ${self_qualified} = get from dictionary by keys ${bid.data} selfQualified  
40 -# \ run keyword if condition is not none ${self_qualified} click visible element ${bid_form_value_self_qualified_input_locator}  
41 - \ run keyword if condition is not none ${self_qualified} execute javascript $('.fancybox-is-open .fancybox-content input[id*="-self_qualified"]').click()  
42 - \ capture page screenshot  
43 - \ ${self_eligible} = get from dictionary by keys ${bid.data} selfEligible  
44 -# \ run keyword if condition is not none ${self_eligible} click visible element ${bid_form_value_self_eligible_input_locator}  
45 - \ run keyword if condition is not none ${self_eligible} execute javascript $('.fancybox-is-open .fancybox-content input[id*="-self_eligible"]').click()  
46 - \ capture page screenshot  
47 - \ ${feature_id} = get from dictionary by keys ${bid.data} parameters  
48 - \ run keyword if condition is not none ${feature_id} fill bid form features ${feature_id}  
49 - \ capture page screenshot  
50 - \ run keyword if '${mode}' in 'open_esco' fill bid form lots Esco ${bid.data.lotValues}  
51 -  
52 -fill bid form features  
53 - [Arguments] ${bid_parameters}  
54 - [Documentation] Заповнити нецінові показники цінової пропозиції.  
55 -  
56 - log many ${bid_parameters}  
57 - ${features_length} = Get Length ${bid_parameters}  
58 - : FOR ${INDEX} IN RANGE 0 ${features_length}  
59 - \ ${bid_form_feature_input_locator} replace string ${bid_form_feature_input_locator_tpl} %title% ${bid_parameters[${INDEX}]['code']}  
60 - \ ${bid_form_get_feature_input_locator} replace string ${bid_form_get_feature_input_locator_tpl} %title% ${bid_parameters[${INDEX}]['code']}  
61 - \ ${bid_form_feature_input_locator_select} replace string ${bid_form_feature_input_locator_select_tpl} %title% ${bid_parameters[${INDEX}]['code']}  
62 - \ ${value_enum} = convert float to string ${bid_parameters[${INDEX}]['value']}  
63 - \ ${bid_form_feature_value_input_locator} set variable ${bid_form_feature_input_locator} ${bid_form_feature_value_input_locator_tpl}  
64 - \ ${bid_form_get_feature_value_input_locator} set variable ${bid_form_get_feature_input_locator} ${bid_form_get_feature_value_input_locator_tpl}  
65 - \ ${bid_form_feature_value_input_locator} replace string ${bid_form_feature_value_input_locator} _ ' '  
66 - \ ${bid_form_get_feature_value_input_locator} replace string ${bid_form_get_feature_value_input_locator} _ ' '  
67 - \ ${bid_form_feature_value_input_locator} replace string ${bid_form_feature_value_input_locator} %value% ${value_enum}  
68 - \ ${bid_form_get_feature_value_input_locator} replace string ${bid_form_get_feature_value_input_locator} %value% ${value_enum}  
69 - \ ${enum_val} set variable ${bid_form_get_feature_value_input_locator}  
70 - \ ${enum_val1}= run keyword if ${bid_parameters[${INDEX}]['value']} == 0 Execute Javascript return $('[data-weight-source="0"]').text()  
71 - \ ... ELSE Execute Javascript ${enum_val}  
72 - \ capture page screenshot  
73 - \ Run Keyword And Ignore Error select from list by label ${bid_form_feature_input_locator_select} ${enum_val1}  
74 - \ capture page screenshot  
75 -  
76 -fill bid form lots Esco  
77 - [Arguments] ${values}  
78 - [Documentation] Заповнити цінову пропозицію Esco  
79 -  
80 - log many ${values}  
81 - ${values_length} = Get Length ${values}  
82 - : FOR ${INDEX} IN RANGE 0 ${values_length}  
83 - \ input number to exist visible input ${bid_form_value_yearly_payments_percentage_input_locator} ${values[${INDEX}].value.yearlyPaymentsPercentage}  
84 - \ capture page screenshot  
85 - \ input text to exist visible input ${bid_form_value_contract_duration_years_input_locator} ${values[${INDEX}].value.contractDuration.years}  
86 - \ capture page screenshot  
87 - \ input text to exist visible input ${bid_form_value_contract_duration_days_input_locator} ${values[${INDEX}].value.contractDuration.days}  
88 - \ capture page screenshot  
89 - \ fill bid form lots Esco AnnualCostsReduction ${values[${INDEX}].value.annualCostsReduction}  
90 - \ capture page screenshot  
91 -  
92 -fill bid form lots Esco AnnualCostsReduction  
93 - [Arguments] ${values}  
94 - [Documentation] Заповнити цінову пропозицію Esco (параметр AnnualCostsReduction).  
95 -  
96 - ${input_index} = set variable 1  
97 - : FOR ${value} IN @{values}  
98 - \ ${input_index_tmp}= convert to string ${input_index}  
99 - \ ${bid_form_value_annual_costs_reduction_input_locator} replace string ${bid_form_value_annual_costs_reduction_input_locator_tpl} %index% ${input_index_tmp}  
100 - \ input number to exist visible input ${bid_form_value_annual_costs_reduction_input_locator} ${value}  
101 - \ ${input_index} = evaluate ${input_index} + 1  
102 -  
103 -fill bid required documents_all  
104 - [Arguments]  
105 - [Documentation] Додати фейковий документ до цінової пропозиції при створенні.  
106 -  
107 - ${file_path} ${file_name} ${file_content} = create_fake_doc  
108 -# click visible element and wait until page contains element ${open_form_add_doc_lot_btn_locator} jquery=.modal.modal-form.js-form-popup.fancybox-content  
109 - #click visible element ${bid_form_add_document_all_btn_locator}  
110 - capture page screenshot  
111 -### execute javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents .js-upload-documents input[type$="file"]:first').click()  
112 - capture page screenshot  
113 - choose file ${add_file_to_bid_form_locator} ${file_path}  
114 - capture page screenshot  
115 - wait until element is visible ${bid_form_add_document_type_input_locator}  
116 -# submit current visible popup  
117 - Run Keyword And Ignore Error Select From List By Value ${bid_form_add_document_type_input_locator} qualificationDocuments  
118 - click visible element ${bid_form_add_document_description_btn_locator}  
119 - capture page screenshot  
120 - wait until element is visible ${bid_form_add_document_description_input_locator}  
121 - input text to exist visible input ${bid_form_add_document_description_input_locator} test2  
122 - click visible element ${bid_form_add_document_close_description_btn_locator}  
123 - capture page screenshot  
124 -  
125 -fill bid form edit  
126 - [Arguments] ${fieldname} ${fieldvalue}  
127 - [Documentation] Змінити поле fieldname на fieldvalue цінової пропозиції користувача username для тендера tender_uaid.  
128 -  
129 - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}  
130 - Run Keyword If '${fieldname}' == 'lotValues[0].value.amount' or '${fieldname}' == 'value.amount' and '${mode}' != 'open_esco' input number to exist visible input ${bid_form_value_amount_input_locator} ${fieldvalue}  
131 -# submit form and check result ${bid_form_submit_btn_locator} ${bid_form_submit_edit_success_msg} ${tender_created_checker_element_locator}  
132 -  
133 -  
134 -add document to bid  
135 - [Arguments] ${path} ${doc_type} ${doc_name}  
136 - #=documents  
137 - [Documentation] Завантажити документ типу doc_type, який знаходиться за шляхом path,  
138 - ... до цінової пропозиції користувача username для тендера tender_uaid.  
139 -  
140 - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}  
141 -### execute javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents .js-upload-documents input[type$="file"]:first').click()  
142 - choose file ${add_file_to_bid_form_locator} ${path}  
143 - run keyword and ignore error wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
144 - wait until element is visible ${bid_form_add_document_type_input_locator}  
145 -# submit current visible popup  
146 - log many ${doc_type}  
147 -# run keyword if '${doc_type}' == 'documents' Select From List By Value ${bid_form_add_document_type_input_locator} qualificationDocuments  
148 -# ... else Select From List By Value ${bid_form_add_document_type_input_locator} ${doc_type}  
149 - Run Keyword And Ignore Error select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal  
150 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' and "${mode}" not in "openeu open_competitive_dialogue" select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal  
151 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' and "${mode}" in "openeu open_competitive_dialogue" select from visible list by value ${bid_form_add_document_type_input_locator} qualificationDocuments  
152 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'financial_documents' select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal  
153 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'qualification_documents' select from visible list by value ${bid_form_add_document_type_input_locator} qualificationDocuments  
154 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'eligibility_documents' select from visible list by value ${bid_form_add_document_type_input_locator} eligibilityDocuments  
155 - capture page screenshot  
156 -  
157 - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('commercialProposal').change()  
158 - capture page screenshot  
159 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' and "${mode}" not in "openeu open_competitive_dialogue" Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('commercialProposal').change()  
160 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' and "${mode}" in "openeu open_competitive_dialogue" Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('qualificationDocuments').change()  
161 - capture page screenshot  
162 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'financial_documents' Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('commercialProposal').change()  
163 - capture page screenshot  
164 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'qualification_documents' Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('qualificationDocuments').change()  
165 - capture page screenshot  
166 - Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'eligibility_documents' Execute Javascript $('.fancybox-is-open .fancybox-content .field-bidform-documents select[id*="-document_type"]:last').val('eligibilityDocuments').change()  
167 -# Run Keyword And Ignore Error select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal  
168 -# Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'documents' select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal  
169 -# Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'financial_documents' select from visible list by value ${bid_form_add_document_type_input_locator} commercialProposal  
170 -# Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'qualification_documents' select from visible list by value ${bid_form_add_document_type_input_locator} qualificationDocuments  
171 -# Run Keyword And Ignore Error Run Keyword If '${doc_type}' == 'eligibility_documents' select from visible list by value ${bid_form_add_document_type_input_locator} eligibilityDocuments  
172 - capture page screenshot  
173 -  
174 - click visible element ${bid_form_add_document_description_btn_locator}  
175 - wait until element is visible ${bid_form_add_document_description_input_locator}  
176 - input text to exist visible input ${bid_form_add_document_description_input_locator} test2  
177 - click visible element ${bid_form_add_document_close_description_btn_locator}  
178 -  
179 -document to bid edit  
180 - [Arguments] ${path} ${doc_type}=documents  
181 - [Documentation] Змінити документ з doc_id в описі в пропозиції користувача username для  
182 - ... тендера tender_uaid на документ, який знаходиться по шляху path.  
183 -  
184 - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}  
185 -# click visible element ${bid_form_edit_document_all_btn_locator}  
186 - capture page screenshot  
187 - choose file ${bid_form_edit_document_all_btn_locator} ${path}  
188 - capture page screenshot  
189 -# wait until element is visible ${bid_form_add_document_type_input_locator}  
190 -  
191 -fill bid form edit document  
192 - [Arguments] ${doc_data} ${doc_id}  
193 - [Documentation] Змінити тип документа з doc_id в заголовку в пропозиції користувача  
194 - ... username для тендера tender_uaid. Дані про новий тип документа знаходяться в doc_data.  
195 -  
196 - open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}  
197 - ##### BOF - TMP for confidentiality#####  
198 - execute javascript $('#tender-bid-form .documents-dynamic-forms-wrapper:last [href$="#edit"]:last').click()  
199 -# click visible element $('#tender-bid-form .documents-dynamic-forms-wrapper:last [href$="#edit"]:last').click()  
200 - set element scroll into view ${bid_form_add_document_close_description_btn_locator}  
201 - capture page screenshot  
202 - wait until element is visible ${bid_form_add_document_description_input_locator} 60  
203 - execute javascript $('#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in [id$="-confidentiality"]').click()  
204 -  
205 -# click visible element ${bid_form_add_document_confidentiality_input_locator}  
206 - capture page screenshot  
207 - input text to exist visible input ${bid_form_add_document_confidentialityrationale_input_locator} ${doc_data.data.confidentialityRationale}  
208 - capture page screenshot  
209 - click visible element ${bid_form_add_document_close_description_btn_locator}  
210 - capture page screenshot  
211 - ##### EOF - TMP #####  
212 -  
213 -get bid information  
214 - [Arguments] ${field}  
215 - [Documentation] Отримати значення поля field пропозиції користувача  
216 - ... username для тендера tender_uaid.  
217 -  
218 - capture page screenshot  
219 - Run Keyword If 'status' == '${field}' submit form and check result ${bid_form_refresh_btn_locator} ${bid_form_refresh_success_msg} ${tender_created_checker_element_locator} ${true}  
220 - Run Keyword If 'status' != '${field}' open popup by btn locator ${bid_form_open_btn_locator} ${bid_popup_locator}  
221 -# click visible element ${bid_form_open_btn_locator}  
222 - capture page screenshot  
223 - Run Keyword If 'status' != '${field}' wait until popup is visible  
224 -# ${question_open_form_answer_locator} = replace string ${question_open_form_answer_btn_locator_tpl} %title% ${question_id}  
225 -# wait until page contains element with reloading ${question_open_form_answer_locator}  
226 - capture page screenshot  
227 - Run Keyword If 'status' == '${field}' submit form and check result ${bid_form_refresh_btn_locator} ${bid_form_refresh_success_msg} ${tender_created_checker_element_locator} ${true}  
228 - #${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' get value by locator on opened page ${bid_lotValues_0_value_amount_value_locator}  
229 - ${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' get bid value ${bid_lotValues_0_value_amount_value_locator}  
230 - ... ELSE Run Keyword If 'status' == '${field}' get value by locator on opened page ${bid_form_bid_status_btn_locator}  
231 - ... ELSE Run Keyword If 'value.amount' == '${field}' get bid value ${bid_form_value_amount_input_locator}  
232 -## ${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' get value by locator on opened page ${bid_lotValues_0_value_amount_value_locator}  
233 -# ... ELSE Run Keyword If 'status' == '${field}' get_text ${bid_form_bid_status_btn_locator}  
234 -## ... ELSE Run Keyword If 'status' == '${field}' get value by locator on opened page ${bid_form_bid_status_btn_locator}  
235 -## ... ELSE Run Keyword If 'value.amount' == '${field}' get value by locator on opened page ${bid_form_value_amount_input_locator}  
236 -# submit current visible popup  
237 -## ${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' or 'value.amount' == '${field}' playtender_service.split_joinvalue ${return_value}  
238 -## ${return_value} = Run Keyword If 'lotValues[0].value.amount' == '${field}' or 'value.amount' == '${field}' Convert To Number ${return_value}  
239 - [Return] ${return_value}  
240 -  
241 -fill bid form remove  
242 - [Documentation] Змінити статус цінової пропозиції для тендера tender_uaid  
243 - ... користувача username на cancelled.  
244 -  
245 - click visible element ${bid_form_remove_btn_locator}  
246 - submit form and check result ${alert_opened_close_bid_btn_locator} ${bid_form_submit_remove_success_msg} ${tender_created_checker_element_locator} ${true}  
247 -  
248 -get bid value  
249 - [Arguments] ${field}  
250 - [Documentation] Отримати значення поля field пропозиції користувача  
251 - ... username для тендера tender_uaid.  
252 -  
253 - ${return_value} = get value by locator on opened page ${field}  
254 - ${return_value} = playtender_service.split_joinvalue ${return_value}  
255 - ${return_value} = Convert To Number ${return_value}  
256 - [Return] ${return_value}  
257 -  
1 -*** Variables ***  
2 -  
3 -#bids  
4 -${bid_form_open_btn_locator} = jquery=#aside-part-pjax a[href*="/tender/bid"]  
5 -${bid_form_remove_btn_locator} = jquery=#aside-part-pjax a[href*="#bid-delete"]  
6 -${bid_form_submit_success_msg} = Пропозиція створена  
7 -${bid_form_submit_edit_success_msg} = Пропозиція відредагована  
8 -${bid_form_submit_remove_success_msg} = Ви впевнені що бажаєте видали свою пропозицію?  
9 -${alert_opened_close_bid_btn_locator} = jquery=.animated-content .js-btn-confirm  
10 -${bid_form_feature_input_locator_select_tpl} = jquery=[data-opid*="%title%"]  
11 -${bid_form_get_feature_input_locator_tpl} = return $('.fancybox-is-open .fancybox-content [data-opid*="%title%"]  
12 -${bid_form_get_feature_value_input_locator_tpl} = option[data-weight-source*="%value%"]').text()  
13 -${bid_form_feature_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content [data-opid*="%title%"]  
14 -${bid_form_feature_value_input_locator_tpl} = option[data-weight-source*="%value%"]  
15 -${bid_form_value_amount_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-value_amount"]  
16 -${bid_form_value_subcontracting_details_input_locator} = jquery=.fancybox-is-open .fancybox-content textarea[id*="-subcontracting_details"]  
17 -${bid_form_value_self_eligible_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-self_eligible"]  
18 -${bid_form_value_self_qualified_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-self_qualified"]  
19 -${bid_form_value_yearly_payments_percentage_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-yearly_payments_percentage"]  
20 -${bid_form_value_contract_duration_years_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-contract_duration_years"]  
21 -${bid_form_value_contract_duration_days_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="-contract_duration_days"]  
22 -${bid_form_value_annual_costs_reduction_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content input[name*="[annual_costs_reduction_%index%]"]  
23 -  
24 -${add_file_to_bid_all_form_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .js-upload-documents  
25 -${add_file_to_bid_form_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .js-upload-documents input[type$="file"]:first  
26 -${bid_form_add_document_all_btn_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .js-upload-documents input[type$="file"]:first  
27 -${bid_form_add_document_type_input_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last select[id*="-document_type"]:last  
28 -${bid_form_add_document_description_btn_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last [href$="#edit"]:last  
29 -${bid_form_add_document_description_input_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in textarea[id*="-description"].form-control  
30 -${bid_form_add_document_close_description_btn_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in [href$="#close"]  
31 -${bid_form_add_document_confidentiality_input_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in [id$="-confidentiality"]  
32 -${bid_form_add_document_confidentialityrationale_input_locator} = jquery=#tender-bid-form .documents-dynamic-forms-wrapper:last .popover.fade.top.in textarea[id*="-confidentiality_rationale"].form-control  
33 -${bid_form_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.btn.btn-success  
34 -${bid_form_edit_document_all_btn_locator} = jquery=.form-documents-group .tab-content .item-wrapper.js-item:last a[href*="#reupload"]  
35 -  
36 -${bid_lotValues_0_value_amount_value_locator} = jquery=.fancybox-slide .modal.fancybox-content #tender-bid-form .tab-content .active.js-lot-tab .js-amount-weight-wrapper .input-group .js-amount-input  
37 -${bid_lotValues_0_value_amount_value_locator_type} = float  
38 -  
39 -${bid_popup_locator} = jquery=.fancybox-slide .modal.fancybox-content  
40 -  
41 -${bid_form_refresh_success_msg} = Закупівля оновлена.  
42 -${bid_form_refresh_btn_locator} = jquery=#tender-general-info a[href*="/utils/tender-sync"]  
43 -${bid_form_bid_status_btn_locator} = jquery=.bid-info-wrapper.hidden.info-wrapper .info-row.status-source  
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_claim_variables.robot  
5 -  
6 -*** Keywords ***  
7 -  
8 -  
9 -Створити вимогу  
10 - [Arguments] ${username} ${tender_uaid} ${type} ${type_id} ${claim} ${doc_name}  
11 - [Documentation] Створити вимогу з claim в описі для тендера tender_uaid.  
12 -  
13 - open tender page by uaid ${tender_uaid}  
14 - click visible element ${claim_page_open_btn_locator}  
15 - capture page screenshot  
16 - wait until page contains element with reloading ${claim_form_open_btn_locator}  
17 - open popup by btn locator ${claim_form_open_btn_locator}  
18 - capture page screenshot  
19 - input text to exist visible input ${claim_form_complaintform_title_input_locator} ${claim.data.title}  
20 - capture page screenshot  
21 - input text to exist visible input ${claim_form_complaintform_description_input_locator} ${claim.data.description}  
22 - capture page screenshot  
23 - Run Keyword And Ignore Error Run Keyword If '${type}' == 'tender' Select From List By Label ${claim_form_complaintform_related_of_input_locator} Закупівля  
24 - capture page screenshot  
25 - Run Keyword And Ignore Error Run Keyword If '${type}' == 'lot' Select From List By Label ${claim_form_complaintform_related_of_input_locator} Лот  
26 - capture page screenshot  
27 - Run Keyword And Ignore Error Run Keyword If '${type}' == 'lot' Click Element ${claim_form_complaintform_related_lot_input_locator}  
28 - ${claim_form_complaintform_related_lot_select_locator} = Run Keyword If '${type}' == 'lot' replace string ${claim_form_complaintform_related_lot_input_locator_tpl} %type_id% ${type_id}  
29 - Run Keyword And Ignore Error Run Keyword If '${type}' == 'lot' Click Element ${claim_form_complaintform_related_lot_select_locator}  
30 - capture page screenshot  
31 - Run Keyword And Ignore Error Select From List By Label ${claim_form_complaintform_complaintform_type_input_locator} Вимога  
32 - Run Keyword And Ignore Error Run Keyword If '${type}' == 'winner_complaint' or '${claim.data.type}' == 'complaint' Select From List By Label ${claim_form_complaintform_complaintform_type_input_locator} Скарга  
33 -  
34 - capture page screenshot  
35 -### Run Keyword If '${doc_name}' != 'null' click visible element ${claim_form_complaintform_document_btn_locator}  
36 - capture page screenshot  
37 - Run Keyword If '${doc_name}' != 'null' choose file ${add_file_to_form_locator} ${doc_name}  
38 - capture page screenshot  
39 - Run Keyword If '${doc_name}' != 'null' wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
40 - capture page screenshot  
41 -# Run Keyword If '${doc_name}' != 'null' submit current visible popup  
42 - submit form and check result ${claim_form_complaintform_submit_btn_locator} ${claim_form_submit_success_msg} ${tender_created_checker_element_locator}  
43 -# Функция ожидания claim_uaid_text_locator соответствующей вимоги  
44 -# click visible element ${claim_form_open_btn_locator}  
45 - reload page  
46 - wait until page does not contain element with reloading ${claim_sync_element_locator} 60  
47 - wait until page contains element with reloading ${claim_uaid_text_locator}  
48 - ${return_value}= get text ${claim_uaid_text_locator}  
49 - ${return_value}= Convert To String ${return_value}  
50 - [return] ${return_value}  
51 -  
52 -Скасувати вимогу  
53 - [Arguments] ${username} ${tender_uaid} ${complaintID} ${cancellation_data} ${award_index}  
54 - [Documentation] Перевести вимогу complaintID для тендера tender_uaid у статус cancelled,  
55 - ... використовуючи при цьому дані confirmation_data.  
56 -  
57 - open tender page by uaid ${tender_uaid}  
58 - click visible element and wait until page contains element ${claim_page_open_btn_locator} ${claim_form_open_btn_locator}  
59 - ${claim_open_form_answer_locator} = replace string ${claim_open_form_answer_btn_locator_tpl} %title% ${complaintID}  
60 - wait until page contains element with reloading ${claim_open_form_answer_locator}  
61 - ${claim_form_cancel_open_btn_locator} = replace string ${claim_form_cancel_open_btn_locator_tpl} %complaint_id% ${complaintID}  
62 - wait until page contains element with reloading ${claim_form_cancel_open_btn_locator}  
63 - open popup by btn locator ${claim_form_cancel_open_btn_locator}  
64 - capture page screenshot  
65 - input text to exist visible input ${claim_form_cancellation_reason_input_locator} ${cancellation_data.data.cancellationReason}  
66 - capture page screenshot  
67 - submit form and check result ${claim_form_complaintform_submit_btn_locator} ${claim_cancel_submit_success_msg} ${tender_created_checker_element_locator}  
68 -  
69 -get claim information  
70 - [Arguments] ${tender_uaid} ${complaintID} ${field_name} ${award_index}=${None}  
71 - [Documentation] Отримати значення поля field_name скарги/вимоги complaintID про  
72 - ... виправлення умов закупівлі/лоту для тендера tender_uaid (скарги/вимоги про  
73 - ... виправлення визначення переможця під номером award_index, якщо award_index != None).  
74 -  
75 - open tender page by uaid ${tender_uaid}  
76 - click visible element ${claim_page_open_btn_locator}  
77 - capture page screenshot  
78 - ${claim_open_form_answer_locator} = replace string ${claim_open_form_answer_btn_locator_tpl} %title% ${complaintID}  
79 - wait until page contains element with reloading ${claim_open_form_answer_locator}  
80 - capture page screenshot  
81 -  
82 - ${claim_wrapper_complain_id_value_locator} = set variable ${claim_open_form_answer_locator}  
83 -# ${claim_wrapper_complaint_id_value_locator} = replace string ${claim_wrapper_complain_id_value_locator_tpl} %complain_id% ${complaintID}  
84 - ${claim_description_value_locator} = Run Keyword If 'description' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_description_value_locator}  
85 - ${claim_title_value_locator} = Run Keyword If 'title' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_title_value_locator}  
86 - ${claim_complain_id_value_locator} = Run Keyword If 'complaintID' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_complain_id_value_locator}  
87 - ${claim_status_value_locator} = Run Keyword If 'status' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_status_value_locator}  
88 - ${claim_resolution_type_value_locator} = Run Keyword If 'resolutionType' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_resolution_type_value_locator}  
89 - ${claim_resolution_value_locator} = Run Keyword If 'resolution' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_resolution_value_locator}  
90 - ${claim_satisfied_value_locator} = Run Keyword If 'satisfied' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_satisfied_value_locator}  
91 - ${claim_related_lot_value_locator} = Run Keyword If 'relatedLot' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_related_lot_value_locator}  
92 - ${claim_cancellation_reason_value_locator} = Run Keyword If 'cancellationReason' == '${field_name}' set variable ${claim_wrapper_complain_id_value_locator} ${claim_cancellation_reason_value_locator}  
93 -  
94 - Run Keyword If "${TEST_NAME}" == "Можливість відповісти на вимогу про виправлення умов закупівлі" Wait Until Keyword Succeeds 420 s 15 s Wait For Answered ${complaintID} ${claim_wrapper_complain_id_value_locator}  
95 - Run Keyword If "${TEST_NAME}" == "Можливість відповісти на вимогу про виправлення умов лоту" Wait Until Keyword Succeeds 420 s 15 s Wait For Answered ${complaintID} ${claim_wrapper_complain_id_value_locator}  
96 - Run Keyword If "Відображення статусу 'answered'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Answered ${complaintID} ${claim_wrapper_complain_id_value_locator}  
97 - Run Keyword If "${TEST_NAME}" == "Відображення задоволення вимоги" Wait Until Keyword Succeeds 300 s 15 s Wait For Satisfied ${complaintID} ${claim_wrapper_complain_id_value_locator}  
98 - Run Keyword If "${TEST_NAME}" == "Відображення незадоволення вимоги" Wait Until Keyword Succeeds 300 s 15 s Wait For Satisfied ${complaintID} ${claim_wrapper_complain_id_value_locator}  
99 - Run Keyword If "Відображення статусу 'resolved'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Resolved ${complaintID} ${claim_wrapper_complain_id_value_locator}  
100 - Run Keyword If "Відображення статусу 'cancelled'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Cancelled ${complaintID} ${claim_wrapper_complain_id_value_locator}  
101 - Run Keyword If "Відображення статусу 'ignored'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Ignored ${complaintID} ${claim_wrapper_complain_id_value_locator}  
102 - Run Keyword If "Відображення статусу 'stopping'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Stopping ${complaintID} ${claim_wrapper_complain_id_value_locator}  
103 - Run Keyword If "Відображення статусу 'pending'" in "${TEST_NAME}" Wait Until Keyword Succeeds 300 s 15 s Wait For Pending ${complaintID} ${claim_wrapper_complain_id_value_locator}  
104 - Run Keyword And Ignore Error Run Keyword If "Відображення кінцевих статусів двох останніх вимог" in "${TEST_NAME}" Wait Until Keyword Succeeds 30 s 5 s Wait For Invalid ${complaintID} ${claim_wrapper_complain_id_value_locator}  
105 - Run Keyword And Ignore Error Run Keyword If "Відображення кінцевих статусів двох останніх вимог" in "${TEST_NAME}" Wait Until Keyword Succeeds 30 s 5 s Wait For Declined ${complaintID} ${claim_wrapper_complain_id_value_locator}  
106 -  
107 - Run Keyword And Return If 'description' == '${field_name}' get value by locator on opened page ${claim_description_value_locator}  
108 - Run Keyword And Return If 'complaintID' == '${field_name}' get value by locator on opened page ${claim_complain_id_value_locator}  
109 - Run Keyword And Return If 'title' == '${field_name}' get value by locator on opened page ${claim_title_value_locator}  
110 - Run Keyword And Return If 'status' == '${field_name}' get value by locator on opened page ${claim_status_value_locator}  
111 - Run Keyword And Return If 'resolutionType' == '${field_name}' get value by locator on opened page ${claim_resolution_type_value_locator}  
112 - Run Keyword And Return If 'resolution' == '${field_name}' get value by locator on opened page ${claim_resolution_value_locator}  
113 - Run Keyword And Return If 'satisfied' == '${field_name}' Отримати інформацію із скарги satisfied ${claim_satisfied_value_locator}  
114 - Run Keyword And Return If 'relatedLot' == '${field_name}' get value by locator on opened page ${claim_related_lot_value_locator}  
115 - Run Keyword And Return If 'cancellationReason' == '${field_name}' get value by locator on opened page ${claim_cancellation_reason_value_locator}  
116 -  
117 -Отримати інформацію із документа скарги title  
118 - [Arguments] ${complaintID} ${doc_id}  
119 - [Documentation] Отримати значення поля title з документу з doc_id в описі для скарги для тендера.  
120 -  
121 - click visible element ${claim_page_open_btn_locator}  
122 - ${claim_open_form_answer_locator} = replace string ${claim_open_form_answer_btn_locator_tpl} %title% ${complaintID}  
123 - wait until page contains element with reloading ${claim_open_form_answer_locator}  
124 - ${claim_file_name_input_locator} = replace string ${claim_file_name_input_locator_tpl} %complain_id% ${complaintID}  
125 -# wait until page contains element with reloading ${claim_file_name_input_locator}  
126 -  
127 - ${return_value} = get text ${claim_file_name_input_locator}  
128 - [return] ${return_value}  
129 -  
130 -get document complaint  
131 - [Arguments] ${complaintID} ${doc_id}  
132 - [Documentation] Завантажити файл doc_id до скарги complaintID для тендера tender_uaid  
133 - ... в директорію ${OUTPUT_DIR} для перевірки вмісту цього файлу.  
134 -  
135 - ${claim_file_name_input_locator} = replace string ${claim_file_name_input_locator_tpl} %complain_id% ${complaintID}  
136 - wait until page contains element with reloading ${claim_file_name_input_locator}  
137 - ${claim_file_link_input_locator} = replace string ${claim_file_link_input_locator_tpl} %complain_id% ${complaintID}  
138 - ${claim_file_name_input_locator} = replace string ${claim_file_name_input_locator_tpl} %complain_id% ${complaintID}  
139 - wait until page contains element with reloading ${tender_new_doc_locator}  
140 -  
141 - ${file_link} = Execute Javascript ${claim_file_link_input_locator}  
142 - ${file_name} = get text ${claim_file_name_input_locator}  
143 - download_file ${file_link} ${file_name} ${OUTPUT_DIR}  
144 - [return] ${file_name}  
145 -  
146 -  
147 -Підтвердити вирішення вимоги  
148 - [Arguments] ${username} ${tender_uaid} ${type} ${type_id} ${complaintID} ${data} ${award_index}  
149 - [Documentation] Підтвердити вирішення вимоги  
150 -  
151 - open tender page by uaid ${tender_uaid}  
152 - click visible element ${claim_page_open_btn_locator}  
153 - click visible element and wait until page contains element ${claim_page_open_btn_locator} ${claim_form_open_btn_locator}  
154 - ${claim_form_resolved_input_locator} = replace string ${claim_form_resolved_input_locator_tpl} %complaint_id% ${complaintID}  
155 - open popup by btn locator ${claim_form_resolved_input_locator}  
156 - ${value} = Set Variable If '${data.data.satisfied}' Задоволен Не задоволен  
157 - run keyword and ignore error select from visible list by label ${claim_form_satisfied_input_locator} ${value}  
158 - capture page screenshot  
159 - submit form and check result ${claim_form_complaintform_submit_btn_locator} ${claim_form_satisfied_submit_success_msg} ${None}  
160 -  
161 -  
162 -Відповісти на вимогу  
163 - [Arguments] ${username} ${tender_uaid} ${complaintID} ${answer_data} ${award_index}  
164 - [Documentation] Відповісти на вимогу complaintID  
165 - ... для тендера tender_uaid, використовуючи при цьому дані answer_data.  
166 -  
167 - open tender page by uaid ${tender_uaid}  
168 - click visible element ${claim_page_open_btn_locator}  
169 - ${claim_open_form_answer_locator} = replace string ${claim_open_form_answer_btn_locator_tpl} %title% ${complaintID}  
170 - wait until page contains element with reloading ${claim_open_form_answer_locator}  
171 - ${claim_form_open_form_answer_btn_locator} = replace string ${claim_form_open_form_answer_btn_locator_tpl} %title% ${complaintID}  
172 - wait until page contains element with reloading ${claim_form_open_form_answer_btn_locator}  
173 - open popup by btn locator ${claim_form_open_form_answer_btn_locator}  
174 - input text to exist visible input ${claim_form_answer_resolution_value_locator} ${answer_data.data.resolution}  
175 - Run Keyword If '${answer_data.data.resolutionType}' == 'resolved' select from list by value ${claim_form_answer_resolution_type_value_locator} resolved  
176 - Run Keyword If '${answer_data.data.resolutionType}' == 'declined' select from list by value ${claim_form_answer_resolution_type_value_locator} declined  
177 - Run Keyword If '${answer_data.data.resolutionType}' == 'invalid' select from list by value ${claim_form_answer_resolution_type_value_locator} invalid  
178 - Run Keyword And Ignore Error input text to exist visible input ${claim_form_answer_tenderer_action_value_locator} ${answer_data.data.tendererAction}  
179 - submit form and check result ${claim_form_answer_success_btn_locator} ${claim_form_answer_submit_success_msg}  
180 -  
181 -  
182 -Wait For Answered  
183 - [Arguments] ${complaintID} ${wrapper}  
184 - [Documentation] Очікування статусу Answered вимоги complaintID  
185 - ... для тендера tender_uaid.  
186 -  
187 - Reload Page  
188 - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% answered  
189 - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}  
190 - Page Should Contain Element ${claim_status_value_locator}  
191 -  
192 -Wait For Satisfied  
193 - [Arguments] ${complaintID} ${wrapper}  
194 - [Documentation] Очікування статусу Answered вимоги complaintID  
195 - ... для тендера tender_uaid.  
196 -  
197 - Reload Page  
198 - ${claim_form_satisfied_value_locator} = replace string ${claim_form_satisfied_value_locator_tpl} %query% Так  
199 - ${claim_form_satisfied_value_locator_tmp} = set variable ${wrapper} ${claim_form_satisfied_value_locator}  
200 - Page Should Contain Element ${claim_form_satisfied_value_locator_tmp}  
201 -  
202 -Wait For Resolved  
203 - [Arguments] ${complaintID} ${wrapper}  
204 - [Documentation] Очікування статусу Answered вимоги complaintID  
205 - ... для тендера tender_uaid.  
206 -  
207 - Reload Page  
208 - ${claim_form_resolved_value_locator} = replace string ${claim_form_status_locator_tpl} %query% resolved  
209 - ${claim_form_resolved_value_locator_tmp} = set variable ${wrapper} ${claim_form_resolved_value_locator}  
210 - Page Should Contain Element ${claim_form_resolved_value_locator_tmp}  
211 -  
212 -Wait For Cancelled  
213 - [Arguments] ${complaintID} ${wrapper}  
214 - [Documentation] Очікування статусу Answered вимоги complaintID  
215 - ... для тендера tender_uaid.  
216 -  
217 - Reload Page  
218 - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% cancelled  
219 - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}  
220 - Page Should Contain Element ${claim_status_value_locator}  
221 -  
222 -Wait For Ignored  
223 - [Arguments] ${complaintID} ${wrapper}  
224 - [Documentation] Очікування статусу Answered вимоги complaintID  
225 - ... для тендера tender_uaid.  
226 -  
227 - Reload Page  
228 - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% ignored  
229 - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}  
230 - Page Should Contain Element ${claim_status_value_locator}  
231 -  
232 -Wait For Stopping  
233 - [Arguments] ${complaintID} ${wrapper}  
234 - [Documentation] Очікування статусу Answered вимоги complaintID  
235 - ... для тендера tender_uaid.  
236 -  
237 - Reload Page  
238 - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% stopping  
239 - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}  
240 - Page Should Contain Element ${claim_status_value_locator}  
241 -  
242 -Wait For Pending  
243 - [Arguments] ${complaintID} ${wrapper}  
244 - [Documentation] Очікування статусу Pending вимоги complaintID  
245 - ... для тендера tender_uaid.  
246 -  
247 - Reload Page  
248 - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% pending  
249 - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}  
250 - Page Should Contain Element ${claim_status_value_locator}  
251 -  
252 -Отримати інформацію із скарги satisfied  
253 - [Arguments] ${wrapper}  
254 - [Documentation] Отримати інформацію із скарги satisfied  
255 -  
256 -  
257 - ${return_value} = get value by locator on opened page ${wrapper}  
258 - ${return_value} = Run Keyword If 'Так' == '${return_value}' Set Variable True  
259 - ... ELSE Set Variable False  
260 - ${return_value} = Convert To Boolean ${return_value}  
261 - [return] ${return_value}  
262 -  
263 -Wait For Invalid  
264 - [Arguments] ${complaintID} ${wrapper}  
265 - [Documentation] Очікування статусу Invalid вимоги complaintID  
266 - ... для тендера tender_uaid.  
267 -  
268 - Reload Page  
269 - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% invalid  
270 - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}  
271 - Page Should Contain Element ${claim_status_value_locator}  
272 -  
273 -Wait For Declined  
274 - [Arguments] ${complaintID} ${wrapper}  
275 - [Documentation] Очікування статусу declined вимоги complaintID  
276 - ... для тендера tender_uaid.  
277 -  
278 - Reload Page  
279 - ${claim_form_status_locator} = replace string ${claim_form_status_locator_tpl} %query% declined  
280 - ${claim_status_value_locator} = set variable ${wrapper} ${claim_form_status_locator}  
281 - Page Should Contain Element ${claim_status_value_locator}  
282 -  
283 -  
1 -*** Variables ***  
2 -  
3 -#claim  
4 -${claim_page_open_btn_locator} = jquery=#aside-part-pjax a[href*="/tender-complaint"]  
5 -#${claim_form_open_btn_locator} = jquery=#tender-part-pjax a[href*="/tender/complaint-create"]:first  
6 -${claim_form_open_btn_locator} = jquery=#tender-part-pjax a[href*="tender-complaint/create"]:first  
7 -${claim_form_complaintform_title_input_locator} = jquery=.fancybox-is-open .fancybox-content input[id*="complaintform-title"]  
8 -${claim_form_complaintform_description_input_locator} = jquery=.fancybox-is-open .fancybox-content textarea[id*="complaintform-description"]  
9 -${claim_form_complaintform_related_of_input_locator} = jquery=.fancybox-is-open .fancybox-content select[id*="complaintform-related_of"]  
10 -${claim_form_complaintform_related_lot_input_locator} = jquery=.fancybox-is-open .fancybox-content select[id*="complaintform-related_lot"]  
11 -${claim_form_complaintform_related_lot_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content select[id*="complaintform-related_lot"] option:contains("%type_id%")  
12 -${claim_form_complaintform_complaintform_type_input_locator} = jquery=.fancybox-is-open .fancybox-content select[id*="complaintform-type"]  
13 -${claim_form_complaintform_document_btn_locator} = jquery=.fancybox-is-open .fancybox-content a[data-url*="/tender/get-complaint-document"]  
14 -${claim_form_complaintform_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.btn.btn-success  
15 -${claim_uaid_text_locator} = jquery=#tender-complaint-list div.item.js-item:first .complaint-id span.value  
16 -#${claim_form_submit_success_msg} = Вимога успішно подана  
17 -${claim_form_submit_success_msg} = успішно подана  
18 -  
19 -${claim_cancel_submit_success_msg} = Вимога/скарга скасована.  
20 -  
21 -#${claim_form_cancel_open_btn_locator_tpl} = jquery=#tender-complaint-list div.item.js-item a[href*="/tender/complaint-cancel"]:last  
22 -#${claim_form_cancel_open_btn_locator} = jquery=#tender-complaint-list div.item.js-item a[href*="/tender/complaint-cancel"]:last  
23 -${claim_form_cancellation_reason_input_locator} = jquery=#complaintcancelform-cancellation_reason  
24 -${claim_form_cancel_open_btn_locator_tpl} = jquery=#tender-part-pjax #tender-complaint-list .complaint__item[data-complaint-id*="%complaint_id%"] a[href*="/tender/complaint-cancel"]  
25 -  
26 -${claim_file_link_input_locator_tpl} = return $('#tender-complaint-list .js-item div[data-complaint-id*="%complain_id%"] .complaint-info-wrapper .info-row.documents .value a[href*="https://public-docs-staging.prozorro.gov.ua"]').attr("href")  
27 -${claim_file_name_input_locator_tpl} = jquery=#tender-complaint-list .js-item div[data-complaint-id*="%complain_id%"] .complaint-info-wrapper .info-row.documents .value a[href*="https://public-docs-staging.prozorro.gov.ua"]  
28 -  
29 -${claim_wrapper_complain_id_value_locator_tpl} = jquery=#tender-complaint-pjax .complaint__item:first  
30 -#${claim_wrapper_complain_id_value_locator_tpl} = jquery=#tender-complaint-pjax .complaint__item[data-title*="%complain_id%"]  
31 -${claim_description_value_locator} = .complaint-info-wrapper .info-row.description .value  
32 -${claim_title_value_locator} = .complaint-info-wrapper .info-row.title .value  
33 -${claim_complain_id_value_locator} = .complaint-info-wrapper .info-row.complaint-id .value  
34 -${claim_status_value_locator} = .complaint-info-wrapper .info-row.status-source.hidden  
35 -${claim_resolution_type_value_locator} = .complaint-info-wrapper .info-row.resolution-type-source.hidden  
36 -${claim_cancellation_reason_value_locator} = .complaint-info-wrapper .info-row.cancellation-reason .value  
37 -${claim_related_lot_value_locator} = .complaint-info-wrapper .info-row.related-item .value  
38 -${claim_resolution_value_locator} = .complaint-info-wrapper .info-row.resolution .value  
39 -${claim_satisfied_value_locator} = .complaint-info-wrapper .info-row.satisfied .value  
40 -  
41 -${claim_sync_element_locator} = jquery=.synhronized__icon.fa.fa-refresh.fa-spin  
42 -  
43 -${claim_open_form_answer_btn_locator_tpl} = jquery=#tender-complaint-list .js-item div[data-complaint-id*="%title%"]  
44 -${claim_form_open_form_answer_btn_locator_tpl} = jquery=#tender-complaint-list .js-item div[data-complaint-id*="%title%"] .btn.btn-success  
45 -${claim_form_resolved_input_locator_tpl} = jquery=#tender-part-pjax #tender-complaint-list .complaint__item[data-complaint-id*="%complaint_id%"] a[href*="/tender/complaint-resolve"]  
46 -${claim_form_satisfied_input_locator} = jquery=.fancybox-is-open .fancybox-content #complaintresolveform-satisfied  
47 -${claim_form_satisfied_submit_success_msg} = Вимога вирішена, дочекайтесь опублікування на сайті уповноваженого органу.  
48 -#formanswer  
49 -${claim_form_answer_resolution_value_locator} = jquery=#tender-complaint-answer-form #complaintanswerform-resolution  
50 -${claim_form_answer_tenderer_action_value_locator} = jquery=#tender-complaint-answer-form #complaintanswerform-tenderer_action  
51 -${claim_form_answer_resolution_type_value_locator} = jquery=#tender-complaint-answer-form #complaintanswerform-resolution_type  
52 -${claim_form_answer_success_btn_locator} = jquery=#tender-complaint-answer-form .btn.btn-success  
53 -${claim_form_answer_submit_success_msg} = Відповідь на вимогу надана, дочекайтесь опублікування на сайті уповноваженого органу.  
54 -${claim_form_status_locator_tpl} = .complaint-info-wrapper .info-row.status-source.hidden:contains(%query%)  
55 -${claim_form_satisfied_value_locator_tpl} = .complaint-info-wrapper .info-row.satisfied .value:contains(%query%)  
1 -*** Settings ***  
2 -  
3 -Library Selenium2Library  
4 -Library String  
5 -Library Collections  
6 -Library playtender_service.py  
7 -Resource playtender_variables.robot  
8 -  
9 -*** Variables ***  
10 -  
11 -${broker} = playtender  
12 -${broker_username} =  
13 -${broker_baseurl} =  
14 -${broker_browser} =  
15 -${broker_language_code} = uk  
16 -${test_role} =  
17 -${is_test_role_owner} =  
18 -  
19 -@{browser_default_size} = ${1200} ${1000}  
20 -@{browser_default_position} = ${0} ${0}  
21 -  
22 -${popup_transaction_time} = 600ms  
23 -  
24 -*** Keywords ***  
25 -  
26 -init environment  
27 - [Arguments] ${username}  
28 - [Documentation] ініціює необхідні глобальні змінні  
29 -  
30 - set global variable ${broker_username} ${username}  
31 - set global variable ${broker_baseurl} ${BROKERS['${broker}'].basepage}  
32 - set global variable ${broker_browser} ${USERS.users['${broker_username}'].browser}  
33 - set global variable ${test_role} ${ROLE}  
34 - ${is_test_role_owner} = set variable if '${test_role}' == 'tender_owner' ${True} ${False}  
35 - set global variable ${is_test_role_owner} ${is_test_role_owner}  
36 -  
37 - register keyword to run on failure __private__handle_keyword_failure  
38 -  
39 -set site language by code  
40 - [Arguments] ${language_code}  
41 - [Documentation] змінити мову сайту  
42 -  
43 - ${is_equal} = __private__check_site_language_code ${language_code}  
44 - run keyword if ${is_equal} == ${False} __private__open_site_language_dropdown_and_select_language_by_code ${language_code}  
45 -  
46 -login to site  
47 - [Arguments] ${user_data}  
48 - [Documentation] авторизувати вказаного користувача, масив повинен містити login, password  
49 -  
50 -# click visible element ${login_popup_open_locator}  
51 -# wait until popup is visible  
52 - open popup by btn locator ${login_popup_open_locator}  
53 - input text to visible input ${login_popup_login_input_locator} ${user_data['login']}  
54 - input text to visible input ${login_popup_password_input_locator} ${user_data['password']}  
55 - click visible element ${login_popup_submit_btn_locator}  
56 - wait until page contains element ${user_logged_checker_element_locator} 30s User can not login  
57 -  
58 -fill item form in opened popup  
59 - [Arguments] ${data}  
60 - [Documentation] заповнює відкриту форму згідно вказаних даних  
61 -  
62 - ${description} = get from dictionary by keys ${data} description  
63 - run keyword if condition is not none ${description} input text to visible input ${item_form_popup_description_input_locator} ${description}  
64 - ${description_ru} = get from dictionary by keys ${data} description_ru  
65 - run keyword if condition is not none ${description_ru} input text to exist visible input ${item_form_popup_description_ru_input_locator} ${description_ru}  
66 - ${description_en} = get from dictionary by keys ${data} description_en  
67 - run keyword if condition is not none ${description_en} input text to exist visible input ${item_form_popup_description_en_input_locator} ${description_en}  
68 - ${quantity} = get from dictionary by keys ${data} quantity  
69 - run keyword and ignore error run keyword if condition is not none ${quantity} input number3 to visible input ${item_form_popup_quantity_input_locator} ${quantity}  
70 - ${unit} = get from dictionary by keys ${data} unit name  
71 - run keyword if condition is not none ${unit} select from visible list by label ${item_form_popup_unit_input_locator} ${unit}  
72 - ${classification} = get from dictionary by keys ${data} classification  
73 - run keyword if condition is not none ${classification} run keyword if '${mode}' not in 'framework_selection' select classification by code attributes ${item_form_popup_classification_edit_btn_locator} ${classification}  
74 - ${additional_classifications} = get from dictionary by keys ${data} additionalClassifications  
75 - run keyword if condition is not none ${additional_classifications} run keyword if '${mode}' not in 'framework_selection' select classification by array of code attributes ${item_form_popup_additional_classification_edit_btn_locator} ${additional_classifications}  
76 -  
77 -get value by locator on opened page  
78 - [Arguments] ${locator} ${type}=${None}  
79 - [Documentation] отримує значення з відповідного локатору і якщо потрібно перетворює до відповідного типу  
80 -  
81 - capture page screenshot  
82 - Run Keyword And Ignore Error __private__set_element_visible_in_browser_area ${locator}  
83 - ${value} = get value by locator ${locator}  
84 - ${value} = convert to specified type ${value} ${type}  
85 - [Return] ${value}  
86 -  
87 -get field_value by field_name on opened page  
88 - [Arguments] ${field_name}  
89 - [Documentation] повертає інформацію з відкритої сторінки, користуючись назвою поля ${field_name}.  
90 - ... для назви поля повинен бути вказаний відповідний локатор (!вкінці змінної повинно бути слово locator),  
91 - ... і якщо потрібно тип поля окремою змінною (!locator замінюється на type) зі значенням [string,integer,float]  
92 -  
93 - ${field_name_prepared} = replace string ${field_name} .[ _  
94 - ${field_name_prepared} = replace string ${field_name_prepared} ]. _  
95 - ${field_name_prepared} = replace string ${field_name_prepared} . _  
96 - ${field_name_prepared} = replace string ${field_name_prepared} [ _  
97 - ${field_name_prepared} = replace string ${field_name_prepared} ] _  
98 - ${field_locator_variable_name} = set variable ${field_name_prepared}_locator  
99 - ${field_type_variable_name} = set variable ${field_name_prepared}_type  
100 - ${field_type_variable_exists} = run keyword and return status variable should exist ${${field_type_variable_name}}  
101 - ${field_type} = set variable if ${field_type_variable_exists} == ${True} ${${field_type_variable_name}} ${None}  
102 - ${field_locator} = set variable ${${field_locator_variable_name}}  
103 - ${field_value} = get value by locator on opened page ${field_locator} ${field_type}  
104 - [Return] ${field_value}  
105 -  
106 -########################################################################################################################  
107 -#################################################### COMMON HELPERS ####################################################  
108 -########################################################################################################################  
109 -  
110 -click visible element  
111 - [Arguments] ${locator}  
112 - [Documentation] перевіряє видимість і клікає по елементу  
113 -  
114 - __private__set_element_visible_in_browser_area ${locator}  
115 - click element ${locator}  
116 -  
117 -click visible element and wait until page contains element  
118 - [Arguments] ${locator} ${checker_element_locator} ${waiting_timeout}=30s ${waiting_error}=Another element was not shown after clicking on specific element  
119 - [Documentation] перевіряє видимість і клікає по елементу  
120 -  
121 - click visible element ${locator}  
122 - wait until page contains element ${checker_element_locator} ${waiting_timeout} ${waiting_error}  
123 -  
124 -click removing form item and wait success result  
125 - [Arguments] ${locator}  
126 - [Documentation] натискає кнопку видалення, очікує успішне повідомлення і закриває повідомлення  
127 -  
128 - click visible element ${locator}  
129 - wait until alert is visible  
130 - click visible element ${alert_confirm_btn_locator}  
131 - wait until page does not contain element ${alert_confirm_btn_locator}  
132 -  
133 -click removing form feature and wait success result  
134 - [Arguments] ${locator}  
135 - [Documentation] натискає кнопку видалення нецінового критерію, очікує успішне повідомлення і закриває повідомлення, а потім закриває вікно нецінового критерію  
136 -  
137 - js click element ${locator}  
138 - wait until alert is visible  
139 - click visible element ${alert_confirm_btn_locator}  
140 - wait until page does not contain element ${alert_confirm_btn_locator}  
141 - submit current visible popup  
142 -  
143 -input text to visible input  
144 - [Arguments] ${locator} ${text}  
145 - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його  
146 -  
147 - __private__set_element_visible_in_browser_area ${locator}  
148 - input text ${locator} ${text}  
149 -  
150 -input text to visible input and press enter  
151 - [Arguments] ${locator} ${text}  
152 - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його і імітує натиснення кнопки Enter  
153 -  
154 - input text to visible input ${locator} ${text}  
155 - press key ${locator} \\13  
156 -  
157 -input text to exist visible input  
158 - [Arguments] ${locator} ${text}  
159 - [Documentation] перевіряє чи елемент існує і видимий у вікні браузера, після чого заповнює його  
160 -  
161 - ${input_exists} = get is element exist ${locator}  
162 - run keyword if ${input_exists} == ${True} input text to visible input ${locator} ${text}  
163 - ... ELSE __private__log input ${locator} does not exist  
164 -  
165 -input date to input  
166 - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y  
167 -  
168 - ${date} = isodate format ${isodate} ${format}  
169 - input text to hidden input ${locator} ${date}  
170 -  
171 -input datetime to input  
172 - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y %H:%M  
173 -  
174 - input date to input ${locator} ${isodate} ${format}  
175 -  
176 -input date to visible input  
177 - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y  
178 - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його відформатовоною датою  
179 -  
180 - __private__set_element_visible_in_browser_area ${locator}  
181 - input date to input ${locator} ${isodate} ${format}  
182 -  
183 -input datetime to visible input  
184 - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y %H:%M  
185 - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його відформатовоною датою  
186 -  
187 - input date to visible input ${locator} ${isodate} ${format}  
188 -  
189 -input datetime to exist visible input  
190 - [Arguments] ${locator} ${isodate} ${format}=%d.%m.%Y %H:%M  
191 - [Documentation] перевіряє чи елемент видимий у вікні браузера, після чого заповнює його відформатовоною датою  
192 -  
193 - ${input_exists} = get is element exist ${locator}  
194 - run keyword if ${input_exists} == ${True} input date to visible input ${locator} ${isodate} ${format}  
195 - ... ELSE __private__log input ${locator} does not exist  
196 -  
197 -input number to visible input  
198 - [Arguments] ${locator} ${number}  
199 - [Documentation] робить елемент видимим, число перетворює в строку і записує в поле  
200 -  
201 - ${number} = convert float to string ${number}  
202 - input text to visible input ${locator} ${number}  
203 -  
204 -input number3 to visible input  
205 - [Arguments] ${locator} ${number}  
206 - [Documentation] робить елемент видимим, число перетворює в строку і записує в поле  
207 -  
208 - ${number} = convert_float_to_string_3f ${number}  
209 - input text to visible input ${locator} ${number}  
210 -  
211 -input number to exist visible input  
212 - [Arguments] ${locator} ${text}  
213 - [Documentation] перевіряє чи елемент існує і видимий у вікні браузера, після чого заповнює його  
214 -  
215 - ${input_exists} = get is element exist ${locator}  
216 - run keyword if ${input_exists} == ${True} input number to visible input ${locator} ${text}  
217 - ... ELSE __private__log input ${locator} does not exist  
218 -  
219 -input month.year of date to visible input  
220 - [Arguments] ${locator} ${isodate}  
221 - [Documentation] робить елемент видимим, витягує місяць.рік і записує в поле  
222 -  
223 - ${value} = isodate format ${isodate} %m.%Y  
224 - input text to visible input ${locator} ${value}  
225 -  
226 -input to search form and wait results  
227 - [Arguments] ${query_input_locator} ${query} ${result_locator_tpl}  
228 - [Documentation] заповнює форму і очікує результат по шаблону селектора  
229 -  
230 - input text to visible input and press enter ${query_input_locator} ${query}  
231 - ${result_locator} = replace string ${result_locator_tpl} %query% ${query}  
232 - wait until page contains search ${result_locator}  
233 -# wait until page contains element with reloading ${result_locator}  
234 -  
235 -select from visible list by value  
236 - [Arguments] ${locator} ${value}  
237 - [Documentation] робить елемент видимим, після чого заповнює його  
238 -  
239 - __private__set_element_visible_in_browser_area ${locator}  
240 - select from list by value ${locator} ${value}  
241 - trigger input change event ${locator}  
242 -  
243 -select from visible list by label  
244 - [Arguments] ${locator} ${label}  
245 - [Documentation] робить елемент видимим, після чого заповнює його  
246 -  
247 - __private__set_element_visible_in_browser_area ${locator}  
248 - select from hidden list by label ${locator} ${label}  
249 - trigger input change event ${locator}  
250 -  
251 -select from visible list by year of date  
252 - [Arguments] ${locator} ${isodate}  
253 - [Documentation] робить елемент видимим, витягує рік і обирає в списку  
254 -  
255 - ${value} = isodate format ${isodate} %Y  
256 - select from visible list by value ${locator} ${value}  
257 -  
258 -select classification by code attributes  
259 - [Arguments] ${btn_locator} ${code_attributes}  
260 - [Documentation] натискає кнопку відкриття попапу класифікатора і чекає поки він відмалюється, шукає відповідний код і закриває попап  
261 -  
262 - ${code_attributes_array} = create list ${code_attributes}  
263 - select classification by array of code attributes ${btn_locator} ${code_attributes_array}  
264 -  
265 -select classification by array of code attributes  
266 - [Arguments] ${btn_locator} ${code_attributes_array} ${include_schemes}=${None} ${exclude_schemes}=${None}  
267 - [Documentation] натискає кнопку відкриття попапу класифікатора і чекає поки він відмалюється, шукає відповідні коди і закриває попап  
268 -  
269 - ${include_schemes_is_none}= get variable is none ${include_schemes}  
270 - ${exclude_schemes_is_none}= get variable is none ${exclude_schemes}  
271 -  
272 - open popup by btn locator ${btn_locator} ${classification_popup_opened_content_locator}  
273 - Capture Page Screenshot  
274 - :FOR ${code_attributes} IN @{code_attributes_array}  
275 - \ ${disabled} = set variable if ${include_schemes_is_none} == ${False} and '${code_attributes['scheme']}' not in ${include_schemes} ${True} ${False}  
276 - \ Capture Page Screenshot  
277 - \ ${disabled} = set variable if ${exclude_schemes_is_none} == ${False} and '${code_attributes['scheme']}' in ${exclude_schemes} ${True} ${disabled}  
278 - \ Capture Page Screenshot  
279 - \ run keyword if ${disabled} == ${False} __private__select_classification_code_in_opened_popup ${code_attributes['id']} ${code_attributes['scheme']}  
280 - \ Capture Page Screenshot  
281 - Capture Page Screenshot  
282 - submit current visible popup  
283 -  
284 -open site page and wait content element  
285 - [Arguments] ${url} ${waiting_timeout}=5s ${waiting_error}=Opening page fails  
286 - [Documentation] переходить по посиланню і чекає контенту сторінки  
287 -  
288 - go to ${url}  
289 - wait until page contains element ${page_content_locator} ${waiting_timeout} ${waiting_error}  
290 -  
291 -open page and wait element by locator  
292 - [Arguments] ${url} ${waiting_element_locator} ${waiting_timeout}=5s ${waiting_error}=Opened page does not have specified element locator  
293 - [Documentation] переходить по посиланню і чекає поки елемент не буде знайдений на сторінці  
294 -  
295 - go to ${url}  
296 - wait until page contains element ${waiting_element_locator} ${waiting_timeout} ${waiting_error}  
297 -  
298 -open popup by btn locator  
299 - [Arguments] ${btn_locator} ${popup_locator}=${None}  
300 - [Documentation] натискає кнопку відкриття попапу і чекає поки він відмалюється  
301 -  
302 - click visible element ${btn_locator}  
303 - ${result} = run keyword and return status wait until popup is visible ${popup_locator}  
304 - run keyword if ${result} == ${False} js click element ${btn_locator}  
305 - run keyword if ${result} == ${False} wait until popup is visible ${popup_locator}  
306 -  
307 -submit current visible popup  
308 - [Documentation] натискає кнопку сабміту в поточному попапі і чекає поки він закриється  
309 -  
310 - ${popup_last_id} = __private__get_element_attribute ${popup_opened_last_locator} id  
311 - click visible element ${popup_opened_last_submit_btn_locator}  
312 - sleep ${popup_transaction_time}  
313 - ${popup_last_locator} = set variable id=${popup_last_id}  
314 - ${popup_exists} = get is element exist ${popup_last_locator}  
315 - return from keyword if ${popup_exists} == ${False}  
316 - wait until page does not contain element ${popup_last_locator} 30s Current popup was not hidden  
317 -  
318 -submit form and check result  
319 - [Arguments] ${submit_btn_locator} ${wait_msg}=${None} ${wait_element_locator}=${None} ${sign_is}=${None}  
320 - [Documentation] сабмітить форму і чекає повідомлення (якщо задано) + елемент (якщо задано)  
321 -  
322 - click visible element ${submit_btn_locator}  
323 - run keyword and ignore error run keyword if condition is not none ${wait_msg} wait until element is visible ${tender_cpv_form_submit_success_msg} 5  
324 -# run keyword and ignore error Wait Until Page Contains ${tender_cpv_form_submit_success_msg} 60  
325 - Capture Page Screenshot  
326 - run keyword and ignore error execute javascript ${tender_cpv_js_submit_btn_locator}  
327 - Capture Page Screenshot  
328 - run keyword and ignore error run keyword if '${mode}' in 'reporting' close sync alert ${tender_form_submit_reporting_success_msg}  
329 - run keyword and ignore error run keyword if condition is not none ${wait_msg} Wait Until Page Contains ${wait_msg} 60  
330 - run keyword and ignore error run keyword if condition is not none ${wait_msg} wait until alert is visible ${wait_msg}  
331 - run keyword and ignore error run keyword if condition is not none ${wait_msg} close current visible alert  
332 -  
333 -#cat проба  
334 - run keyword and ignore error run keyword if not ${sign_is} Load Sign  
335 - run keyword and ignore error close current visible alert  
336 - run keyword and ignore error run keyword if condition is not none ${wait_element_locator} wait until element is visible ${wait_element_locator} 60  
337 - run keyword and ignore error run keyword if condition is not none ${wait_element_locator} wait until page contains element ${wait_element_locator} 60s Element was not shown after form submitting  
338 -  
339 -close sync alert  
340 - [Arguments] ${wait_msg}=${None}  
341 - [Documentation] чекає поки попап не стане видимим на сторінці  
342 -  
343 - ${status}= run keyword if '${mode}' in 'openeu open_competitive_dialogue openua_defense open_esco open_framework' Run Keyword And Return Status Page Should Contain ${wait_msg}  
344 - run keyword and ignore error run keyword if ${status} and '${mode}' in 'openeu open_competitive_dialogue openua_defense open_esco open_framework' Wait Until Page Contains ${wait_msg} 60  
345 - run keyword and ignore error run keyword if ${status} and '${mode}' in 'openeu open_competitive_dialogue openua_defense open_esco open_framework' wait until alert is visible ${wait_msg}  
346 - run keyword and ignore error run keyword if ${status} and '${mode}' in 'openeu open_competitive_dialogue openua_defense open_esco open_framework' close current visible alert  
347 -  
348 -  
349 -wait until popup is visible  
350 - [Arguments] ${popup_locator}=${None} ${waiting_timeout}=30s ${waiting_error}=Opened popup still not visible  
351 - [Documentation] чекає поки попап не стане видимим на сторінці  
352 -  
353 - ${popup_locator_is_none} = get variable is none ${popup_locator}  
354 - ${popup_locator} = set variable if ${popup_locator_is_none} == ${False} ${popup_locator} ${popup_opened_content_locator}  
355 - ${status} = run keyword and return status wait until element is visible ${popup_locator} ${waiting_timeout} ${waiting_error}  
356 - # trying to prevent "StaleElementReferenceException: Message: stale element reference: element is not attached to the page document" error  
357 - run keyword if ${status} == ${False} sleep 1  
358 - run keyword if ${status} == ${False} wait until element is visible ${popup_locator} 1 ${waiting_error}  
359 -  
360 -wait until alert is visible  
361 - [Arguments] ${message}=${None}  
362 - [Documentation] чекає поки не з'явиться алерт  
363 -  
364 - ${message_is_none} = get variable is none ${message}  
365 - ${message} = convert to string ${message}  
366 - ${alert_message_locator} = replace string ${alert_message_contains_text_locator_tpl} %text% ${message}  
367 - run keyword if ${message_is_none} == ${True} wait until page contains element ${alert_opened_locator} 60s Alert was not shown  
368 - run keyword if ${message_is_none} == ${False} wait until page contains element ${alert_message_locator} 60s Alert was not shown  
369 -  
370 - # wait for ending animation  
371 - sleep 500ms  
372 -  
373 -close current visible alert  
374 - [Documentation] закриває поточний alert  
375 -  
376 - click visible element ${alert_opened_close_btn_locator}  
377 -  
378 - # wait for ending animation  
379 - sleep 500ms  
380 -  
381 -wait until page contains search  
382 - [Arguments] ${locator} ${retry}=5m ${retry_interval}=2s  
383 - [Documentation] чекає поки елемент не з'явиться на сторінці з перезапуском пошуку  
384 -  
385 - ${result} = get is element exist ${locator}  
386 - capture page screenshot  
387 - run keyword if ${result} == ${False} wait until keyword succeeds ${retry} ${retry_interval} reload page and fail if element does not exist on search ${locator}  
388 -  
389 -wait until page contains element with reloading  
390 - [Arguments] ${locator} ${retry}=5m ${retry_interval}=2s  
391 - [Documentation] чекає поки елемент не з'явиться на сторінці з перезавантаженням сторінки  
392 -  
393 - ${result} = get is element exist ${locator}  
394 - run keyword if ${result} == ${False} wait until keyword succeeds ${retry} ${retry_interval} reload page and fail if element does not exist ${locator}  
395 -  
396 -wait until page does not contain element with reloading  
397 - [Arguments] ${locator} ${retry}=5m ${retry_interval}=2s  
398 - [Documentation] чекає поки елемент не пропаде зі сторінки з перезавантаженням сторінки  
399 -  
400 - ${result} = get is element exist ${locator}  
401 - run keyword if ${result} == ${True} wait until keyword succeeds ${retry} ${retry_interval} reload page and fail if element exists ${locator}  
402 - capture page screenshot  
403 -  
404 -wait until tab content is visible  
405 - [Arguments] ${tab_link} ${waiting_timeout}=30s ${waiting_error}=Opened tab still not visible  
406 - [Documentation] чекає поки контент вказаного табу не буде видимим  
407 -  
408 - ${tab_link_href} = __private__get_element_attribute ${tab_link} href  
409 - ${tab_content_locator} = set variable jquery=${tab_link_href}  
410 - wait until element is visible ${tab_content_locator} ${waiting_timeout} ${waiting_error}  
411 -  
412 -reload page and fail if element exists  
413 - [Arguments] ${locator}  
414 - [Documentation] перезавантажує сторінку і фейлить тест якщо елемент присутній  
415 -  
416 - capture page screenshot  
417 - reload page  
418 - capture page screenshot  
419 - ${exists} = get is element exist ${locator}  
420 - run keyword if ${exists} == ${True} fail  
421 -  
422 -reload page and fail if element does not exist  
423 - [Arguments] ${locator}  
424 - [Documentation] перезавантажує сторінку і фейлить тест якщо елемент відсутній  
425 -  
426 - reload page  
427 - capture page screenshot  
428 - ${exists} = get is element exist ${locator}  
429 - run keyword if ${exists} == ${False} fail  
430 -  
431 -reload page and fail if element does not exist on search  
432 - [Arguments] ${locator}  
433 - [Documentation] перезавантажує сторінку і фейлить тест якщо елемент відсутній в пошуку  
434 -  
435 - click visible element ${tender_form_search_btn_locator}  
436 - ${exists} = get is element exist ${locator}  
437 - run keyword if ${exists} == ${False} fail  
438 -  
439 -get is 404 page  
440 - [Documentation] перевіряє чи поточна сторінка з 404 помилкою  
441 -  
442 - ${exists} = get is element exist ${error_page_404_checker_element_locator}  
443 - [Return] ${exists}  
444 -  
445 -wait until 404 page disappears  
446 - [Arguments] ${retry}=5m ${retry_interval}=2s  
447 - [Documentation] оновлює сторінку і чекає поки не пропаде 404 помилка  
448 -  
449 - ${result} = get is 404 page  
450 - run keyword if ${result} == ${True} wait until keyword succeeds ${retry} ${retry_interval} reload page and fail if element exists ${error_page_404_checker_element_locator}  
451 -  
452 -########################################################################################################################  
453 -################################################### PRIVATE KEYWORDS ###################################################  
454 -########################################################################################################################  
455 -  
456 -__private__handle_keyword_failure  
457 - [Documentation] обробка падіння тесту, збір можливої інформації для аналізу проблеми  
458 -  
459 - capture page screenshot  
460 - ${form_errors} = __private__get_all_form_errors  
461 - log dictionary ${form_errors}  
462 -  
463 -__private__get_all_form_errors  
464 - [Documentation] збирає всі помилки форм на сторінці  
465 -  
466 - ${errors} = execute javascript  
467 - ... var errors = {};  
468 - ... $('.has-error .help-block-error').each(function () {  
469 - ... var cssClass = $(this).attr('class'), text = $(this).text();  
470 - ... cssClass = cssClass.replace("help-block-error", "");  
471 - ... cssClass = cssClass.replace("help-block", "");  
472 - ... errors[cssClass] = text;  
473 - ... });  
474 - ... return errors;  
475 - [Return] ${errors}  
476 -  
477 -__private__log  
478 - [Arguments] ${msg}  
479 - [Documentation] пише в логи  
480 -  
481 - log ${msg}  
482 - log to console ${msg}  
483 -  
484 -__private__get_element_attribute  
485 - [Arguments] ${locator} ${attribute}  
486 - [Documentation] повертає значення атрибуту для вказаного елементу  
487 -  
488 - ${value} = get element attribute ${locator}@${attribute}  
489 - [Return] ${value}  
490 -  
491 -__private__set_element_visible_in_browser_area  
492 - [Arguments] ${locator}  
493 - [Documentation] робить елемент видимим у вікні браузера  
494 -  
495 - set element scroll into view ${locator}  
496 -  
497 -__private__get_site_language_code  
498 - [Documentation] повертає код поточної мови сайта  
499 -  
500 - ${current_language_code} = __private__get_element_attribute ${language_selector_active_element_locator} ${language_selector_active_element_code_attribute_name}  
501 - [Return] ${current_language_code}  
502 -  
503 -__private__check_site_language_code  
504 - [Arguments] ${language_code}  
505 - [Documentation] повертає чи поточна мова сайту відповідає вказаній  
506 -  
507 - ${current_language_code} = __private__get_site_language_code  
508 - ${is_equal} = set variable if "${current_language_code}" == "${language_code}" ${True} ${False}  
509 - [Return] ${is_equal}  
510 -  
511 -__private__open_site_language_dropdown_and_select_language_by_code  
512 - [Arguments] ${language_code}  
513 - [Documentation] відкриває випадаючий список мов, обрає потрібну, чекає перезавантаження сторінки  
514 -  
515 - click visible element ${language_selector_open_element_locator}  
516 - ${language_selector_list_element_locator} = replace string ${language_selector_list_element_locator_tpl} %code% ${language_code}  
517 - click element ${language_selector_list_element_locator}  
518 - ${language_selector_active_element_locator} = replace string ${language_selector_active_element_by_code_locator_tpl} %code% ${language_code}  
519 - wait until page contains element ${language_selector_active_element_locator} 30s Language have not changed  
520 -  
521 -__private__select_classification_code_in_opened_popup  
522 - [Arguments] ${code} ${scheme}=${None}  
523 - [Documentation] в поточний попап з класифікатором перемикає схему, шукає заданий код в полі пошуку і обирає його  
524 -  
525 - # check scheme  
526 - ${scheme_is_none} = get variable is none ${scheme}  
527 - ${scheme} = convert to string ${scheme}  
528 - run keyword if ${scheme_is_none} == ${False} and '${scheme}' not in ${site_allowed_schemes} __private__log Scheme "${scheme}" is needed to implement.  
529 - return from keyword if ${scheme_is_none} == ${False} and '${scheme}' not in ${site_allowed_schemes}  
530 - ${scheme_tab_locator} = replace string ${classification_popup_scheme_tab_locator_tpl} %scheme% ${scheme}  
531 - ${scheme_tab_exists} = get is element exist ${scheme_tab_locator}  
532 - run keyword if ${scheme_tab_exists} == ${True} click visible element ${scheme_tab_locator}  
533 - run keyword if ${scheme_tab_exists} == ${True} wait until tab content is visible ${scheme_tab_locator}  
534 - ... ELSE __private__log Classification scheme tab ${scheme} does not exist  
535 - # seraching code  
536 - input text to visible input and press enter ${classification_popup_search_input_locator} ${code}  
537 - ${code} = convert to string ${code}  
538 - ${code_item_locator} = replace string ${classification_popup_serach_item_locator_tpl} %code% ${code}  
539 - wait until page contains element ${code_item_locator} 90s Specified classification code was not found  
540 - click visible element ${code_item_locator}  
541 -  
542 -Load Sign  
543 - run keyword and ignore error click visible element ${plan_form_ecp_btn_locator}  
544 - ${loadingfakeKey} = Run keyword And Return Status Wait Until Page Contains Це фейкове накладання ЕЦП 30  
545 - run keyword and ignore error Run Keyword If ${loadingfakeKey} == True submit form and check result id=SignDataButton ${qualification_ecp_form_submit_success_msg}  
546 - ${loadingKey} = Run keyword And Return Status Wait Until Page Contains Серійний номер 30  
547 - Run Keyword If ${loadingfakeKey} == True Fail Далі не ходити  
548 - Run Keyword If ${loadingKey} == False Load Sign Data  
549 - Wait Until Page Contains Серійний номер 60  
550 - submit form and check result id=SignDataButton ${qualification_ecp_form_submit_success_msg}  
551 -  
552 -Load Sign Data  
553 - Wait Until Page Contains Element id=CAsServersSelect 60  
554 - Select From List By Label id=CAsServersSelect Тестовий ЦСК АТ "ІІТ"  
555 - Wait Until Page Contains Element id=PKeyFileName 60  
556 - Choose File id=PKeyFileInput ${CURDIR}/Key-6.dat  
557 - Wait Until Page Contains Element id=PKeyPassword 60  
558 - Input Text id=PKeyPassword 12345677  
559 - Wait Until Page Contains Element id=PKeyReadButton 60  
560 - Click Element id=PKeyReadButton  
561 -  
562 -GetDictionaryKeyExist  
563 - [Arguments] ${Dictionary Name} ${Key}  
564 - Run Keyword And Return Status Dictionary Should Contain Key ${Dictionary Name} ${Key}  
565 -  
566 -GetValueFromDictionaryByKey [Arguments] ${Dictionary Name} ${Key}  
567 - ${KeyIsPresent}= Run Keyword And Return Status Dictionary Should Contain Key ${Dictionary Name} ${Key}  
568 - ${Value}= Run Keyword If ${KeyIsPresent} Get From Dictionary ${Dictionary Name} ${Key}  
569 - Return From Keyword ${Value}  
570 -  
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_variables.robot  
5 -Resource playtender_contract_variables.robot  
6 -Resource playtender_qualification_variables.robot  
7 -  
8 -*** Keywords ***  
9 -  
10 -edit contract  
11 - [Arguments] ${contract_index} ${field_name} ${amount} ${field_name2}=${None} ${amount2}=${None}  
12 - [Documentation] Редагувати контракт з індексом ${contract_index}  
13 - ... для поля field_name та значення amount.  
14 -  
15 - Run Keyword If '${TEST_NAME}' == 'Неможливість вказати ціну договору з ПДВ більше ніж результат проведення аукціону' and '${mode}' not in 'open_esco' Fail Amount should be less or equal to awarded amount  
16 - Run Keyword If '${TEST_NAME}' == 'Неможливість вказати ціну договору з ПДВ більше ніж результат проведення аукціону' and '${mode}' in 'open_esco' Fail Can't update amount for contract value  
17 - Run Keyword If '${TEST_NAME}' == 'Неможливість зменшити ціну договору без ПДВ на суму більшу за 20% від ціни договору з ПДВ (закупівля з ПДВ)' Fail Amount should be greater than amountNet and differ by no more than 20.0%  
18 - ${complaint_period_end_date} = run keyword if '${mode}' not in 'reporting' get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}  
19 - run keyword if '${mode}' not in 'reporting' Wait date ${complaint_period_end_date}  
20 - click visible element ${contract_form_0_open_btn_locator}  
21 - Run Keyword And Ignore Error Wait Until Page Contains ${contract_contractform_contract_number_input_locator} 10  
22 - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 5  
23 - wait until element is visible ${contract_contractform_contract_number_input_locator} 10  
24 - capture page screenshot  
25 - ${file_path} ${file_name} ${file_content} = create_fake_doc  
26 - ${value_added_tax_included} = Run Keyword If '${mode}' in 'negotiation reporting' run keyword and return status Checkbox Should Not Be Selected ${contract_contractform_value_added_tax_included_locator}  
27 - run keyword if '${mode}' in 'negotiation reporting' and ${value_added_tax_included} Execute Javascript $('[id$="contractform-value_added_tax_included"]').click()  
28 -# run keyword if '${mode}' == 'negotiation' and ${value_added_tax_included} click visible element ${contract_contractform_value_added_tax_included_locator}  
29 - ${contract_number} = get value by locator on opened page ${contract_contractform_contract_number_input_locator}  
30 - Run Keyword If '${contract_number}' == '' input text to exist visible input ${contract_contractform_contract_number_input_locator} 1234567890  
31 - capture page screenshot  
32 - ${date_signed} = Get Current Date  
33 - ${contract_date_signed} = get value by locator on opened page ${contract_contractform_date_signed_input_locator}  
34 - Run Keyword If '${contract_date_signed}' == '' input datetime to visible input ${contract_contractform_date_signed_input_locator} ${date_signed}  
35 - ${date_start} = Get Current Date increment=02:00:00  
36 - ${contract_date_start} = get value by locator on opened page ${contract_contractform_date_start_input_locator}  
37 - Run Keyword If '${contract_date_start}' == '' input datetime to visible input ${contract_contractform_date_start_input_locator} ${date_start}  
38 - ${date_end} = Get Current Date increment=04:00:00  
39 - ${contract_date_end} = get value by locator on opened page ${contract_contractform_date_end_input_locator}  
40 - Run Keyword If '${contract_date_end}' == '' input datetime to visible input ${contract_contractform_date_end_input_locator} ${date_end}  
41 -  
42 - Run Keyword If '${field_name}' == 'value.amount' input number to exist visible input ${contract_contractform_amount_input_locator} ${amount}  
43 -# ${budget} = Run Keyword If '${field_name}' == 'value.amount' and '${mode}' == 'negotiation' Set Variable ${amount/0.85}  
44 -# Run Keyword If '${field_name}' == 'value.amount' and '${mode}' == 'negotiation' input number to exist visible input ${contract_contractform_amount_input_locator} ${budget}  
45 - Run Keyword If '${field_name}' == 'value.amountNet' input number to exist visible input ${contract_contractform_amount_net_input_locator} ${amount}  
46 - capture page screenshot  
47 - choose file ${add_file_to_contract_contractform_locator} ${file_path}  
48 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator} 60  
49 - wait until element is visible ${contract_contractform_add_document_type_input_locator} 60  
50 - capture page screenshot  
51 - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content select[id*="-document_type"]:last').val('contractSigned').change()  
52 - capture page screenshot  
53 - click visible element ${contract_contractform_add_document_description_btn_locator}  
54 - capture page screenshot  
55 - wait until element is visible ${contract_contractform_add_document_description_input_locator}  
56 - input text to exist visible input ${contract_contractform_add_document_description_input_locator} test2  
57 - capture page screenshot  
58 - click visible element ${contract_contractform_add_document_close_description_btn_locator}  
59 - capture page screenshot  
60 -  
61 - submit form and check result ${contract_contractform_submit_btn_locator} ${contract_contractform_submit_success_msg} ${contract_active_form_open_btn_locator}  
62 -# run keyword and ignore error submit form and check result ${contract_contractform_submit_btn_locator} ${contract_contractform_submit_success_msg} ${contract_active_form_open_btn_locator}  
63 - capture page screenshot  
64 -  
65 -edit unitprices  
66 - [Arguments] ${tender_uaid} ${contract_data}  
67 - [Documentation] Встановити ціну за одиницю для контракту для користувача username для тендера ${tender_uaid},  
68 - ... використовуючи значення з ${contract_data}.  
69 -  
70 -# Run Keyword If '${TEST_NAME}' == 'Можливість встановити ціну за одиницю для першого контракту' open popup by btn locator ${contract_active_form_agreement_open_btn_locator}  
71 - Run Keyword If '${TEST_NAME}' == 'Можливість встановити ціну за одиницю для другого контракту' click visible element ${contract_next_form_agreement_open_btn_locator}  
72 -# Run Keyword If '${TEST_NAME}' == 'Можливість встановити ціну за одиницю для другого контракту' open popup by btn locator ${contract_active_form_agreement_open_btn_locator}  
73 - Run Keyword If '${TEST_NAME}' == 'Можливість встановити ціну за одиницю для третього контракту' click visible element ${contract_next_form_agreement_open_btn_locator}  
74 - open popup by btn locator ${contract_active_form_agreement_open_btn_locator}  
75 - input number to exist visible input ${contract_agreement_unit_prices_input_locator} ${contract_data.data.unitPrices.value.amount}  
76 -  
77 - submit form and check result ${contract_contractform_submit_btn_locator} ${contract_agreement_active_submit_success_msg}  
78 - capture page screenshot  
79 -  
80 -active agreement contract  
81 - [Arguments] ${startDate} ${endDate}  
82 - [Documentation] Зареєструвати угоду для користувача username для тендера tender_uaid,  
83 - ... для поля Початок строку, на який укладається угода задати значення startDate, для Кінець строку, на який укладається угода - endDate.  
84 -  
85 - open popup by btn locator ${contract_active_agreement_form_open_btn_locator}  
86 - capture page screenshot  
87 - ${file_path} ${file_name} ${file_content} = create_fake_doc  
88 - ${contract_number} = get value by locator on opened page ${contract_agreement_agreement_number_input_locator}  
89 - Run Keyword If '${contract_number}' == '' input text to exist visible input ${contract_agreement_agreement_number_input_locator} 1234567890  
90 - capture page screenshot  
91 - ${date_signed} = Get Current Date  
92 - ${contract_date_signed} = get value by locator on opened page ${contract_agreement_date_signed_input_locator}  
93 - Run Keyword If '${contract_date_signed}' == '' input datetime to visible input ${contract_agreement_date_signed_input_locator} ${date_signed}  
94 - ${date_start} = Get Current Date increment=02:00:00  
95 - ${contract_date_start} = get value by locator on opened page ${contract_agreement_date_start_input_locator}  
96 - Run Keyword If '${contract_date_start}' == '' input datetime to visible input ${contract_agreement_date_start_input_locator} ${date_start}  
97 - ${date_end} = Get Current Date increment=04:00:00  
98 - ${contract_date_end} = get value by locator on opened page ${contract_agreement_date_end_input_locator}  
99 - Run Keyword If '${contract_date_end}' == '' input datetime to visible input ${contract_agreement_date_end_input_locator} ${date_end}  
100 -  
101 - capture page screenshot  
102 - choose file ${add_file_to_contract_contractform_locator} ${file_path}  
103 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator} 60  
104 - wait until element is visible ${contract_contractform_add_document_type_input_locator} 60  
105 - capture page screenshot  
106 - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content select[id*="-document_type"]:last').val('contractSigned').change()  
107 - capture page screenshot  
108 - click visible element ${contract_contractform_add_document_description_btn_locator}  
109 - capture page screenshot  
110 - wait until element is visible ${contract_contractform_add_document_description_input_locator}  
111 - input text to exist visible input ${contract_contractform_add_document_description_input_locator} test2  
112 - capture page screenshot  
113 - click visible element ${contract_contractform_add_document_close_description_btn_locator}  
114 - capture page screenshot  
115 -  
116 - submit form and check result ${contract_contractform_submit_btn_locator} ${contract_agreement_submit_success_msg}  
117 - capture page screenshot  
118 - open popup by btn locator ${contract_active_agreement_active_form_open_btn_locator}  
119 - Execute Javascript $('.fancybox-is-open .fancybox-content button.btn.btn-success').click()  
120 - capture page screenshot  
121 - run keyword and ignore error Load Sign  
122 - capture page screenshot  
123 - submit form and check result ${qualification_form_submit_btn_locator} ${contract_agreement_active_submit_success_msg} ${None}  
124 - capture page screenshot  
125 -  
1 -*** Variables ***  
2 -  
3 -#contractform  
4 -${contract_form_0_open_btn_locator} = jquery=#contracts-pjax a[href*="/tender/contract?contract"]  
5 -${contract_contractform_contract_number_input_locator} = jquery=#contractform-contract_number  
6 -${contract_contractform_date_signed_input_locator} = jquery=#contractform-date_signed  
7 -${contract_contractform_date_start_input_locator} = jquery=#contractform-date_start  
8 -${contract_contractform_date_end_input_locator} = jquery=#contractform-date_end  
9 -${contract_contractform_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.btn.btn-success  
10 -${contract_contractform_submit_success_msg} = Контракт успішно завантажений  
11 -${contract_contractform_amount_input_locator} = jquery=#contractform-value_amount  
12 -${contract_contractform_amount_net_input_locator} = jquery=#contractform-value_amount_net  
13 -${contract_contractform_active_submit_success_msg} = Контракт успішно активовано, дочекайтесь опублікування на сайті уповноваженого органу.  
14 -${contract_contractform_value_added_tax_included_locator} = jquery=#contractform-value_added_tax_included  
15 -  
16 -#contractform document  
17 -${add_file_to_contract_contractform_locator} = jquery=.field-contractform-documents .js-upload-documents input[type$="file"]:first  
18 -${contract_contractform_add_document_type_input_locator} = jquery=.js-dynamic-form-content-item:last .document-type select[id*="-document_type"]  
19 -${contract_contractform_add_document_description_btn_locator} = jquery=.js-dynamic-form-content-item:last [href$="#edit"]:last  
20 -${contract_contractform_add_document_description_input_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in textarea[id*="-description"].form-control  
21 -${contract_contractform_add_document_close_description_btn_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in [href$="#close"]  
22 -  
23 -${contract_active_form_open_btn_locator} = jquery=#contracts-pjax a[href*="/tender/contract-activate"]  
24 -${contract_active_form_agreement_open_btn_locator} = jquery=#agreement-contracts-list .tabs__pane.tabs__pane--visible a[href*="/tender/agreement-contract?"]  
25 -${contract_next_form_agreement_open_btn_locator} = jquery=#agreement-contracts-list .tabs__item.tabs__item--active_next-child a[id*="tab-agreement-contract"]  
26 -${contract_agreement_unit_prices_input_locator} = jquery=.fancybox-is-open input[id$="agreementcontractform-unit_prices"]  
27 -${contract_agreement_active_submit_success_msg} = Постачальник успішно підтверджений, триває синхронізація з сайтом уповноваженого органу.  
28 -${contract_active_agreement_form_open_btn_locator} = jquery=.aside__inner a[href*="/tender/agreement?"]  
29 -${contract_agreement_agreement_number_input_locator} = jquery=#agreementform-agreement_number  
30 -${contract_agreement_date_signed_input_locator} = jquery=#agreementform-date_signed  
31 -${contract_agreement_date_start_input_locator} = jquery=#agreementform-date_start  
32 -${contract_agreement_date_end_input_locator} = jquery=#agreementform-date_end  
33 -${contract_agreement_submit_success_msg} = Угода завантажена, наступний крок - її активація.  
34 -${contract_active_agreement_active_form_open_btn_locator} = jquery=.aside__inner a[href*="/tender/agreement-activate?"]  
35 -${contract_agreement_active_submit_success_msg} = Угода успішно активована!  
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_plan_variables.robot  
5 -  
6 -*** Keywords ***  
7 -  
8 -update plan queue  
9 - [Documentation] запускає оновлення планів з ЦБД і додає їх в чергу, тобто синхронізація може відбутися не відразу  
10 - ... поточна сторіка повертається  
11 -  
12 - ${current_url} = get location  
13 - go to ${broker_baseurl}/utils/queue-plan-update  
14 - go to ${current_url}  
15 -  
16 -open new plan form  
17 - [Documentation] відкриття сторінки створення плану  
18 -  
19 - open page and wait element by locator ${broker_baseurl}/plan/create ${plan_form_locator}  
20 -  
21 -open plan form by uaid  
22 - [Arguments] ${plan_uaid}  
23 - [Documentation] відкриття сторінки редагування плану  
24 -  
25 - open plan page by uaid ${plan_uaid}  
26 - click visible element and wait until page contains element ${plan_edit_btn_locator} ${plan_form_locator}  
27 -  
28 -open plan page by uaid  
29 - [Arguments] ${uaid} ${refresh}=${True}  
30 - [Documentation] відкриває сторінку з планом  
31 -  
32 - ${current_location} = get location  
33 - ${needed_location} = set variable ${broker_baseurl}/plan/${uaid}  
34 - run keyword if '${current_location}' != '${needed_location}' or ${refresh} == ${True} open site page and wait content element ${needed_location}  
35 - log many 1  
36 - ${is_plan_found} = get is element exist ${plan_view_checker_element_locator}  
37 - log many 2  
38 - return from keyword if ${is_plan_found} == ${True}  
39 - log many 3  
40 - ${is_plan_not_found} = get is 404 page  
41 - ${is_needed_to_update_and_wait_sync} = set variable if ${is_test_role_owner} == ${False} and ${is_plan_not_found} ${True} ${False}  
42 - run keyword if ${is_needed_to_update_and_wait_sync} update plan queue  
43 - run keyword if ${is_needed_to_update_and_wait_sync} wait until 404 page disappears  
44 - ${is_plan_found} = get is element exist ${plan_view_checker_element_locator}  
45 - run keyword if ${is_plan_found} == ${False} fail Opening plan page by uaid fails.  
46 -  
47 -open plan search form  
48 - [Documentation] відкриває сторінку з пошуком планів  
49 -  
50 - open page and wait element by locator ${broker_baseurl}/plans ${plan_search_form_locator}  
51 -  
52 -fill plan form  
53 - [Arguments] ${data}  
54 - [Documentation] заповнення відкритої форми з масива даних  
55 -  
56 - fill plan general info ${data}  
57 - ${items} = get from dictionary by keys ${data} items  
58 - run keyword if condition is not none ${items} fill plan form items ${items}  
59 - ${buyers} = get from dictionary by keys ${data} buyers  
60 - run keyword if condition is not none ${buyers} fill plan form buyers ${buyers}  
61 -#Пока не передает Дятлов  
62 - ${budget_breakdowns} = get from dictionary by keys ${data} budget breakdown  
63 - run keyword if condition is not none ${budget_breakdowns} fill plan form budgetbreakdowns ${budget_breakdowns}  
64 -# fill plan form budgetbreakdowns  
65 -  
66 -fill plan general info  
67 - [Arguments] ${data}  
68 - [Documentation] заповнює приховані поля + відкриває попап основних даних, заповнює його і закриває  
69 -  
70 - # hidden inputs  
71 - ${budget_id} = get from dictionary by keys ${data} budget id  
72 - run keyword if condition is not none ${budget_id} input text to hidden input ${plan_form_budget_id_input_locator} ${budget_id}  
73 - ${project_id} = get from dictionary by keys ${data} budget project id  
74 - run keyword if condition is not none ${project_id} input text to hidden input ${plan_form_project_id_input_locator} ${project_id}  
75 - ${project_name} = get from dictionary by keys ${data} budget project name  
76 - run keyword if condition is not none ${project_name} input text to hidden input ${plan_form_project_name_input_locator} ${project_name}  
77 -  
78 - # general info  
79 - open popup by btn locator ${plan_form_general_panel_edit_btn_locator}  
80 - ${procurement_method_type} = get from dictionary by keys ${data} tender procurementMethodType  
81 - run keyword if condition is not none ${procurement_method_type} select from visible list by value ${plan_form_procurement_method_type_input_locator} ${procurement_method_type}  
82 - ${budget_description} = get from dictionary by keys ${data} budget description  
83 - run keyword if condition is not none ${budget_description} input text to visible input ${plan_form_title_input_locator} ${budget_description}  
84 - ${tender_start_date} = get from dictionary by keys ${data} tender tenderPeriod startDate  
85 - run keyword if condition is not none ${tender_start_date} select from visible list by year of date ${plan_form_year_input_locator} ${tender_start_date}  
86 - run keyword if condition is not none ${tender_start_date} input month.year of date to visible input ${plan_form_tender_start_date_input_locator} ${tender_start_date}  
87 - ${amount} = get from dictionary by keys ${data} budget amount  
88 - run keyword and ignore error run keyword if condition is not none ${amount} input number to visible input ${plan_form_value_amount_input_locator} ${amount}  
89 - ${currency} = get from dictionary by keys ${data} budget currency  
90 - run keyword if condition is not none ${currency} select from visible list by value ${plan_form_value_currency_input_locator} ${currency}  
91 - ${classification} = get from dictionary by keys ${data} classification  
92 - run keyword if condition is not none ${classification} select classification by code attributes ${plan_form_classification_edit_btn_locator} ${classification}  
93 - ${additional_classifications} = get from dictionary by keys ${data} additionalClassifications  
94 - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_additional_classification_edit_btn_locator} ${additional_classifications} ${None} ${kekv_schemes}  
95 - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_kekv_classification_edit_btn_locator} ${additional_classifications} ${kekv_schemes}  
96 - Execute Javascript $('[id$="planform-test_mode"]').click()  
97 - submit current visible popup  
98 -  
99 -fill plan form items  
100 - [Arguments] ${item_attributes_array}  
101 - [Documentation] заповнення номенклатури плану  
102 -  
103 - :FOR ${item_attributes} IN @{item_attributes_array}  
104 - \ ${item_update_index} = get from dictionary by keys ${item_attributes} list_index  
105 - \ ${item_update_index_string} = convert to string ${item_update_index}  
106 - \ ${open_form_btn_locator} = replace string ${plan_form_update_item_btn_locator_tpl} %index% ${item_update_index_string}  
107 - \ run keyword if condition is not none ${item_update_index} click visible element ${open_form_btn_locator}  
108 - \ run keyword if condition is none ${item_update_index} click visible element ${plan_form_add_item_btn_locator}  
109 - \ wait until popup is visible  
110 - \ fill plan item form in opened popup ${item_attributes}  
111 - \ run keyword and ignore error submit current visible popup  
112 -  
113 -fill plan item form in opened popup  
114 - [Arguments] ${data}  
115 -  
116 - fill item form in opened popup ${data}  
117 -  
118 - ${delivery_end_date} = get from dictionary by keys ${data} deliveryDate endDate  
119 - run keyword if condition is not none ${delivery_end_date} run keyword and ignore error input date to input ${item_form_popup_delivery_end_date_input_locator} ${delivery_end_date}  
120 -  
121 -fill plan form buyers  
122 - [Arguments] ${buyer_attributes_array}  
123 - [Documentation] заповнення замовника плану  
124 -  
125 - :FOR ${buyer_attributes} IN @{buyer_attributes_array}  
126 - \ click visible element ${plan_form_update_buyer_btn_locator}  
127 - \ wait until popup is visible  
128 - \ fill buyer form in opened popup ${buyer_attributes}  
129 - \ submit current visible popup  
130 -  
131 -fill buyer form in opened popup  
132 - [Arguments] ${data}  
133 - [Documentation] заповнює відкриту форму згідно вказаних даних про замовника  
134 -  
135 - ${legal_name} = get from dictionary by keys ${data} identifier legalName  
136 - run keyword if condition is not none ${legal_name} input text to visible input ${buyer_form_popup_legal_name_input_locator} ${legal_name}  
137 - ${identifier_id} = get from dictionary by keys ${data} identifier id  
138 - run keyword if condition is not none ${identifier_id} input text to visible input ${buyer_form_popup_identifier_id_input_locator} ${identifier_id}  
139 -  
140 -fill plan form budgetbreakdowns  
141 - [Arguments] ${budgetbreakdowns_attributes_array}  
142 - [Documentation] заповнення Джерел фінансування плану  
143 -  
144 - click visible element ${plan_form_update_budgetbreakdowns_btn_locator}  
145 - wait until popup is visible  
146 - :FOR ${budgetbreakdowns_attributes} IN @{budgetbreakdowns_attributes_array}  
147 - \ click visible element ${plan_form_add_budgetbreakdowns_btn_locator}  
148 - \ wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
149 - \ fill budgetbreakdowns form in opened popup ${budgetbreakdowns_attributes}  
150 -### \ submit current visible popup  
151 -## click visible element ${plan_form_add_budgetbreakdowns_btn_locator}  
152 -## wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
153 -## fill budgetbreakdowns form in opened popup  
154 -# fill budgetbreakdowns form in opened popup ${budgetbreakdowns_attributes}  
155 - submit current visible popup  
156 -  
157 -fill budgetbreakdowns form in opened popup  
158 - [Arguments] ${data}  
159 - [Documentation] заповнює відкриту форму згідно вказаних даних про Джерела фінансування  
160 -  
161 - ${title} = get from dictionary by keys ${data} title  
162 - run keyword if condition is not none ${title} select from visible list by label ${plan_budgetbreakdowns_form_popup_title_input_locator} ${title}  
163 - ${value_amount} = get from dictionary by keys ${data} value amount  
164 - run keyword if condition is not none ${value_amount} input number to visible input ${plan_budgetbreakdowns_value_amount_input_locator} ${value_amount}  
165 -## input number to visible input ${plan_budgetbreakdowns_value_amount_input_locator} 56333.77  
166 - ${description} = get from dictionary by keys ${data} description  
167 - run keyword if condition is not none ${description} input text to visible input ${plan_budgetbreakdowns_description_input_locator} ${description}  
168 -## input text to visible input ${plan_budgetbreakdowns_description_input_locator} description  
169 -  
170 -save plan form and wait synchronization  
171 - [Documentation] натискає кнопку "Зберегти" і чекає синхронізації плану  
172 -  
173 - submit form and check result ${plan_form_submit_btn_locator} ${plan_form_submit_success_msg} ${plan_created_checker_element_locator}  
174 - wait until page does not contain element with reloading ${plan_sync_element_locator}  
175 -  
176 -delete plan  
177 - [Arguments] ${data}  
178 - [Documentation] натискає кнопку "Скасувати рядок плану" і видаляє план  
179 -  
180 - click visible element ${plan_delete_btn_locator}  
181 - ${reason} = get from dictionary by keys ${data} reason  
182 - run keyword if condition is not none ${reason} input text to visible input ${plan_form_delete_reason_value_locator} ${reason}  
183 - submit form and check result ${plan_form_delete_sucess_btn_locator} ${plan_form_delete_submit_success_msg}  
1 -*** Variables ***  
2 -  
3 -# plan form  
4 -${plan_form_submit_success_msg} = Рядок плану завантажений, наступний крок - накладання ЕЦП/КЕП і підтвердження  
5 -#${plan_form_submit_success_msg} = дочекайтесь опублікування на сайті уповноваженого органу  
6 -${plan_form_locator} = id=plan-form  
7 -${plan_form_general_panel_edit_btn_locator} = jquery=#General .panel-heading .js-form-popup-update  
8 -${plan_form_procurement_method_type_input_locator} = id=planform-procurement_method_type  
9 -${plan_form_budget_id_input_locator} = id=planform-budget_id  
10 -${plan_form_project_id_input_locator} = id=planform-project_id  
11 -${plan_form_project_name_input_locator} = id=planform-project_name  
12 -${plan_form_title_input_locator} = id=planform-title  
13 -${plan_form_year_input_locator} = id=planform-year  
14 -${plan_form_tender_start_date_input_locator} = id=planform-tender_start_date  
15 -${plan_form_value_amount_input_locator} = id=planform-value_amount-disp  
16 -${plan_form_value_currency_input_locator} = id=planform-value_currency  
17 -${plan_form_classification_edit_btn_locator} = jquery=.field-planform-classification_id .js-classification-input-wrapper [data-toggle="classification"]  
18 -${plan_form_additional_classification_edit_btn_locator} = jquery=.field-planform-additional_classification_ids .js-additional-classification-input-wrapper [data-toggle="additional-classification"]  
19 -${plan_form_kekv_classification_edit_btn_locator} = jquery=.field-planform-additional_classification_ids_kekv .js-additional-classification-input-wrapper [data-toggle="additional_classification_ids_kekv"]  
20 -${plan_form_add_item_btn_locator} = jquery=#Items .js-form-popup-add  
21 -${plan_form_update_item_btn_locator_tpl} = jquery=#Items .js-form-popup-panel:nth(%index%) .panel-heading .js-form-popup-update  
22 -${plan_form_remove_item_btn_locator_tpl} = jquery=#Items .js-form-popup-panel[data-title*="%title%"] .panel-heading .js-form-popup-remove  
23 -${plan_form_update_buyer_btn_locator} = jquery=#Buyer .js-form-popup-update  
24 -${plan_form_submit_btn_locator} = jquery=#plan-form .js-submit-btn  
25 -${plan_created_checker_element_locator} = id=plan-part-pjax  
26 -${plan_form_update_budgetbreakdowns_btn_locator} = jquery=#BudgetBreakdowns .js-form-popup-update  
27 -${plan_form_add_budgetbreakdowns_btn_locator} = jquery=#budgetbreakdowns-form-popup a[href*="#add-budgetBreakdowns"]  
28 -${plan_budgetbreakdowns_form_popup_title_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-title"]  
29 -${plan_budgetbreakdowns_value_amount_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-value_amount-disp"]  
30 -#${plan_budgetbreakdowns_value_amount_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-value_amount"]  
31 -${plan_budgetbreakdowns_description_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-description"]  
32 -  
33 -# plan view  
34 -${plan_view_checker_element_locator} = id=plan-general-info  
35 -${plan_sync_element_locator} = jquery=#aside-part-pjax .status-label .fa-refresh  
36 -${plan_uaid_text_locator} = jquery=#plan-general-info .plan-id .value  
37 -${plan_edit_btn_locator} = jquery=#aside-part-pjax a[href*="plan/update"]  
38 -${plan_delete_btn_locator} = jquery=#aside-part-pjax a[href*="/plan/cancel"]  
39 -# -- for viewer --  
40 -${plan_tender_procurementMethodType_value_locator} = jquery=#plan-general-info .procurement-method-type.hidden  
41 -${plan_budget_amount_value_locator} = jquery=#plan-general-info .budget-amount.hidden  
42 -${plan_budget_amount_value_type} = float  
43 -${plan_budget_description_value_locator} = jquery=#plan-general-info .budget-description .value  
44 -${plan_budget_currency_value_locator} = jquery=#plan-general-info .budget-currency.hidden  
45 -${plan_budget_id_value_locator} = jquery=#plan-general-info .budget-id .value  
46 -${plan_procuringEntity_name_value_locator} = jquery=#plan-general-info .organization .definitions__list .organization_name.hidden .definitions__value  
47 -${plan_procuringEntity_identifier_scheme_value_locator} = jquery=#plan-general-info .organization .definitions__list .identifier_scheme.hidden .definitions__value  
48 -${plan_procuringEntity_identifier_id_value_locator} = jquery=#plan-general-info .organization .definitions__list .identifier_code .definitions__value  
49 -${plan_procuringEntity_identifier_legalName_value_locator} = jquery=#plan-general-info .organization .definitions__list .identifier_legal_name.hidden .definitions__value  
50 -${plan_classification_description_value_locator} = jquery=#plan-general-info .main-classification-description.hidden  
51 -${plan_classification_scheme_value_locator} = jquery=#plan-general-info .main-classification-scheme.hidden  
52 -${plan_classification_id_value_locator} = jquery=#plan-general-info .main-classification-code.hidden  
53 -${plan_tender_tenderPeriod_startDate_value_locator} = jquery=#plan-general-info .tender-start-date-source.hidden  
54 -${plan_items_0_description_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .description  
55 -#${plan_items_0_description_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .textvalue  
56 -${plan_items_0_quantity_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .quantity-source  
57 -${plan_items_0_quantity_value_type} = float  
58 -${plan_items_0_deliveryDate_endDate_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .delivery-end-date-source  
59 -#${plan_items_0_deliveryDate_endDate_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .delivery-end-date-source  
60 -${plan_items_0_unit_code_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .unit-code-source  
61 -${plan_items_0_unit_name_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .unit-title-source  
62 -${plan_items_0_classification_description_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .main-classification-description  
63 -${plan_items_0_classification_scheme_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .main-classification-scheme  
64 -${plan_items_0_classification_id_value_locator} = jquery=.items-wrapper .hidden.info-wrapper .main-classification-code  
65 -#${plan_items_0_unit_code_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .unit-code-source  
66 -#${plan_items_0_unit_name_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .unit-title-source  
67 -#${plan_items_0_classification_description_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .main-classification-description  
68 -#${plan_items_0_classification_scheme_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .main-classification-scheme  
69 -#${plan_items_0_classification_id_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(1) .item-info-wrapper .main-classification-code  
70 -${plan_items_1_description_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .textvalue  
71 -${plan_items_1_quantity_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .quantity-source  
72 -${plan_items_1_quantity_value_type} = float  
73 -${plan_items_1_deliveryDate_endDate_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .delivery-end-date-source  
74 -${plan_items_1_unit_code_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .unit-code-source  
75 -${plan_items_1_unit_name_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .unit-title-source  
76 -${plan_items_1_classification_description_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .main-classification-description  
77 -${plan_items_1_classification_scheme_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .main-classification-scheme  
78 -${plan_items_1_classification_id_value_locator} = jquery=.items-wrapper .pseudo-table .pseudo-table__row:nth(2) .item-info-wrapper .main-classification-code  
79 -${plan_status_value_locator} = jquery=#aside-part-pjax .opstatus.hidden  
80 -  
81 -# plan index + search  
82 -${plan_search_form_locator} = id=plan-filter-form  
83 -##${plan_search_form_query_input_locator} = jquery=#plan-filter-form .dynamic-search-query input  
84 -${plan_search_form_query_input_locator} = jquery=#plan-filter-form [data-ds-filter="query"] input.select2-search__field  
85 -${plan_search_form_result_locator_tpl} = jquery=#plan-list .lots__item .lot__characteristic li:contains(%query%)  
86 -  
87 -${plan_form_ecp_btn_locator} = id=submitBtn  
88 -  
89 -#for delete  
90 -${plan_form_delete_reason_value_locator} = id=plancancellationform-reason  
91 -${plan_form_delete_sucess_btn_locator} = jquery=.btn.btn-success:contains("Скасувати")  
92 -${plan_form_delete_submit_success_msg} = Рядок плану закупівлі успішно скасований  
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_variables.robot  
5 -Resource playtender_bid_variables.robot  
6 -Resource playtender_qualification_variables.robot  
7 -  
8 -*** Keywords ***  
9 -  
10 -  
11 -open tender form prequalification  
12 - [Arguments] ${qualification_num}  
13 - [Documentation] Відкрити форму прекваліфікації і потрібну кваліфікацію під номером qualification_num  
14 -  
15 - run keyword if ${qualification_num} == 0 wait until page contains element with reloading ${prequalification_form_0_open_btn_locator}  
16 - run keyword if ${qualification_num} == 0 open popup by btn locator ${prequalification_form_0_open_btn_locator}  
17 - run keyword if ${qualification_num} == 1 open popup by btn locator ${prequalification_form_1_open_btn_locator}  
18 - run keyword if ${qualification_num} == -1 open popup by btn locator ${prequalification_form_-1_open_btn_locator}  
19 - run keyword if ${qualification_num} == -2 wait until page contains element with reloading ${prequalification_form_-2_open_btn_locator}  
20 - run keyword if ${qualification_num} == -2 open popup by btn locator ${prequalification_form_-2_open_btn_locator}  
21 -# run keyword if ${qualification_num} == -2 execute javascript $('#bids-pjax .pseudo-table__row:last a[href*="/tender/prequalification"]').click()  
22 -  
23 -confirm qualifications  
24 - [Documentation] Відкрити форму прекваліфікації і перевести кваліфікацію під номером qualification_num до тендера  
25 - ... tender_uaid в статус active.  
26 -  
27 - Execute Javascript $('#prequalificationform-decision').val('accept').change()  
28 - capture page screenshot  
29 - wait until page contains element ${prequalification_form_eligible_input_locator}  
30 - capture page screenshot  
31 - click visible element ${prequalification_form_eligible_input_locator}  
32 - click visible element ${prequalification_form_qualified_input_locator}  
33 - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_submit_success_msg} ${tender_created_checker_element_locator}  
34 -  
35 -reject qualifications  
36 - [Documentation] Відкрити форму прекваліфікації і перевестикваліфікацію під номером qualification_num до тендера  
37 - ... tender_uaid в статус unsuccessful.  
38 -  
39 - Execute Javascript $('#prequalificationform-decision').val('decline').change()  
40 - capture page screenshot  
41 -# wait until page contains element ${qualification_form_reasons_cancellation_input_locator}  
42 -# capture page screenshot  
43 -# input text to exist visible input ${qualification_form_reasons_cancellation_input_locator} GenerateFakeText  
44 - Execute Javascript ${prequalification_form_title_cancellation_input_locator}  
45 - capture page screenshot  
46 -# input text to exist visible input ${qualification_form_reasons_cancellation_input_locator} GenerateFakeText  
47 - input text to exist visible input ${prequalification_form_description_cancellation_input_locator} GenerateFakeText  
48 - capture page screenshot  
49 - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_decline_success_msg} ${tender_created_checker_element_locator}  
50 - capture page screenshot  
51 -  
52 -cancel qualifications  
53 - [Documentation] Відкрити форму прекваліфікації і перевести кваліфікацію під номером qualification_num до тендера  
54 - ... tender_uaid в статус cancelled.  
55 -  
56 - wait until page contains element ${prequalification_form_description_cancellation_input_locator}  
57 - Execute Javascript $('#prequalificationform-decision').val('cancel').change()  
58 -# select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}  
59 - capture page screenshot  
60 - wait until page contains element ${prequalification_form_description_cancellation_input_locator}  
61 - capture page screenshot  
62 - input text to exist visible input ${prequalification_form_description_cancellation_input_locator} GenerateFakeText  
63 - capture page screenshot  
64 - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_cancel_success_msg} ${tender_created_checker_element_locator}  
65 -  
66 -approve the final qualification decision  
67 - [Documentation] Перевести тендер tender_uaid в статус active.pre-qualification.stand-still.  
68 -  
69 - wait until alert is visible ${qualification_form_approve_question_msg}  
70 - click visible element ${alert_confirm_btn_locator}  
71 - wait until alert is visible ${qualification_form_approve_success_msg}  
72 - close current visible alert  
73 -  
74 - wait until page does not contain element ${alert_confirm_btn_locator}  
75 -  
76 -# wait until page contains ${qualification_form_approve_question_msg}  
77 -# Execute Javascript ${qualification_form_approve_js_submit_btn_locator}  
78 -# Wait Until Page Contains ${qualification_form_approve_success_msg} 60  
79 -# wait until alert is visible ${qualification_form_approve_success_msg}  
80 -# run keyword and ignore error run keyword if condition is not none ${qualification_form_approve_success_msg} close current visible alert  
81 - run keyword and ignore error Wait Until Keyword Succeeds 1600 s 20 s Wait For QualificationsPeriodEnd  
82 -  
83 -#qualification  
84 -open tender form qualification  
85 - [Arguments] ${award_num}  
86 - [Documentation] Відкрити форму кваліфікації і потрібну кваліфікацію під номером award_num  
87 -  
88 - run keyword if "${mode}" not in "open_framework" Run Keywords  
89 - ... run keyword if ${award_num} == 0 wait until page contains element with reloading ${qualification_form_0_open_btn_locator}  
90 - ... AND run keyword if ${award_num} == 0 open popup by btn locator ${qualification_form_0_open_btn_locator}  
91 -##### BOF - TMP #####  
92 - ... AND run keyword if ${award_num} == 1 open popup by btn locator ${qualification_form_1_open_btn_locator}  
93 - ... AND run keyword if ${award_num} == -1 open popup by btn locator ${qualification_form_last_open_btn_locator}  
94 - ... AND run keyword if ${award_num} == 2 open popup by btn locator ${qualification_form_2_open_btn_locator}  
95 - ... ELSE IF "${mode}" in "open_framework" Run Keywords  
96 - ... run keyword if ${award_num} == 0 wait until page contains element with reloading ${qualification_form_0_open_btn_locator}  
97 - ... AND run keyword if ${award_num} == 0 open popup by btn locator ${qualification_form_0_open_btn_locator}  
98 - ... AND run keyword if ${award_num} == 1 open popup by btn locator ${qualification_form_1_open_btn_locator}  
99 - ... AND run keyword if ${award_num} == -1 open popup by btn locator ${qualification_form_last_open_btn_locator}  
100 - ... AND run keyword if ${award_num} == 2 open popup by btn locator ${qualification_form_2_open_btn_locator}  
101 - ... AND run keyword if ${award_num} == 3 open popup by btn locator ${qualification_form_3_open_btn_locator}  
102 -  
103 -copy file qualification  
104 - [Arguments] ${username} ${document} ${award_num}  
105 - [Documentation] Завантажити документ, який знаходиться по шляху document до  
106 - ... постачальника під номером award_num для тендера tender_uaid.  
107 -  
108 - ## copy file to another dir to prevent it deleting  
109 - ${new_doc_name} = Replace String ${document} /tmp/ /tmp/playtender/  
110 - Copy File ${document} ${new_doc_name}  
111 - Set To Dictionary ${USERS.users['${username}']} qproposal${award_num}_document=${new_doc_name}  
112 -  
113 -confirm award qualification  
114 - [Arguments] ${username} ${award_num}  
115 - [Documentation] Перевести постачальника під номером award_num для тендера tender_uaid  
116 - ... в статус active.  
117 -  
118 - Wait Until Page Contains ${popup_opened_content_success_locator} 60  
119 - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10  
120 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
121 -# ${doc_isset}= GetDictionaryKeyExist ${USERS.users['${username}']} qproposal${award_num}_document  
122 -# ${doc_name}= Run Keyword If ${doc_isset} GetValueFromDictionaryByKey ${USERS.users['${username}']} qproposal${award_num}_document  
123 -# ... ELSE create_fake_doc  
124 - ${file_path} ${file_name} ${file_content} = create_fake_doc  
125 -# Execute Javascript ${qualification_form_accept_input_locator}  
126 - Execute Javascript $('#qualificationform-decision').val('accept').change()  
127 -# select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}  
128 - capture page screenshot  
129 - run keyword and ignore error wait until page contains element ${qualification_form_eligible_input_locator}  
130 - capture page screenshot  
131 -# run keyword and ignore error click visible element ${qualification_form_eligible_input_locator}  
132 -# run keyword and ignore error click visible element ${qualification_form_qualified_input_locator}  
133 - run keyword and ignore error Execute Javascript $('#qualificationform-qualified').click()  
134 - run keyword and ignore error Execute Javascript $('#qualificationform-eligible').click()  
135 - choose file ${add_file_to_qualification_form_locator} ${file_path}  
136 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator} 60  
137 - wait until element is visible ${qualification_form_add_document_type_input_locator} 60  
138 -# submit current visible popup  
139 -  
140 - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content select[id*="-document_type"]:last').val('winningBid').change()  
141 - capture page screenshot  
142 - click visible element ${qualification_form_add_document_description_btn_locator}  
143 - capture page screenshot  
144 - wait until element is visible ${qualification_form_add_document_description_input_locator}  
145 - input text to exist visible input ${qualification_form_add_document_description_input_locator} test2  
146 - capture page screenshot  
147 - click visible element ${qualification_form_add_document_close_description_btn_locator}  
148 - capture page screenshot  
149 -  
150 - run keyword and ignore error click visible element ${qualification_ecp_check_input_locator}  
151 - capture page screenshot  
152 - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_form_submit_success_msg} ${qualification_form_submit_btn_locator}  
153 - capture page screenshot  
154 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
155 -## run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${None} ${qualification_ecp_form_open_locator}  
156 - Execute Javascript $('.fancybox-is-open .fancybox-content button.btn.btn-success').click()  
157 -# click visible element ${qualification_form_submit_btn_locator}  
158 - capture page screenshot  
159 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
160 - wait until element is visible ${qualification_ecp_form_open_locator} 60  
161 - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10  
162 - capture page screenshot  
163 - run keyword and ignore error Load Sign  
164 - capture page screenshot  
165 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
166 - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10  
167 - capture page screenshot  
168 - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_after_ecp_form_submit_success_msg} ${None}  
169 - capture page screenshot  
170 -# Wait Until Page Contains ЕЦП/КЕП успішно накладено на рішення, тепер потрібно підтвердити рішення. 60  
171 -# click visible element xpath=//div[contains(@class, 'jconfirm')]//*[text()='Закрити']  
172 -  
173 -  
174 -reject award qualification  
175 - [Arguments] ${username} ${award_num}  
176 - [Documentation] Перевести постачальника під номером award_num для тендера tender_uaid  
177 - ... в статус active.  
178 -  
179 - Wait Until Page Contains ${popup_opened_content_success_locator} 60  
180 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
181 -# wait until popup is visible  
182 - ${doc_isset} = GetDictionaryKeyExist ${USERS.users['${username}']} qproposal${award_num}_document  
183 -# ${doc_name} = Run Keyword If ${doc_isset} GetValueFromDictionaryByKey ${USERS.users['${username}']} qproposal${award_num}_document  
184 -# ... ELSE GenerateFakeDocument  
185 - ${file_path} ${file_name} ${file_content} = create_fake_doc  
186 - Execute Javascript $('#qualificationform-decision').val('decline').change()  
187 - capture page screenshot  
188 -# select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}  
189 - wait until page contains element ${qualification_form_reasons_cancellation_input_locator}  
190 - capture page screenshot  
191 - Execute Javascript ${qualification_award_form_title_cancellation_input_locator}  
192 - capture page screenshot  
193 -# input text to exist visible input ${qualification_form_reasons_cancellation_input_locator} GenerateFakeText  
194 - input text to exist visible input ${qualification_form_description_cancellation_input_locator} GenerateFakeText  
195 -  
196 - choose file ${add_file_to_qualification_form_locator} ${file_path}  
197 - wait until element is visible ${qualification_form_add_document_type_input_locator}  
198 -# submit current visible popup  
199 -  
200 - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content #qualification-documents select[id*="-document_type"]:last').val('winningBid').change()  
201 - capture page screenshot  
202 - click visible element ${qualification_form_add_document_description_btn_locator}  
203 - wait until element is visible ${qualification_form_add_document_description_input_locator}  
204 - input text to exist visible input ${qualification_form_add_document_description_input_locator} test2  
205 - capture page screenshot  
206 - click visible element ${qualification_form_add_document_close_description_btn_locator}  
207 - capture page screenshot  
208 -  
209 - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_cancell_success_msg}  
210 - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10  
211 - capture page screenshot  
212 - Execute Javascript $('.fancybox-is-open .fancybox-content button.btn.btn-success').click()  
213 - capture page screenshot  
214 - run keyword and ignore error Load Sign  
215 - capture page screenshot  
216 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
217 - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10  
218 - capture page screenshot  
219 - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_after_ecp_form_submit_success_msg} ${None}  
220 - capture page screenshot  
221 - reload page  
222 -  
223 -cancel award qualification  
224 - [Documentation] Відкрити форму кваліфікації і перевести кваліфікацію під номером qualification_num до тендера  
225 - ... tender_uaid в статус cancelled.  
226 -  
227 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
228 -# Execute Javascript ${qualification_form_cancel_input_locator}  
229 - Execute Javascript $('#qualificationform-decision').val('cancel').change()  
230 -# select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}  
231 - capture page screenshot  
232 - run keyword and ignore error wait until page contains element ${qualification_form_description_cancellation_input_locator}  
233 - capture page screenshot  
234 - run keyword and ignore error Execute Javascript ${qualification_award_form_title_decline_input_locator}  
235 - run keyword and ignore error input text to exist visible input ${qualification_form_description_cancellation_input_locator} GenerateFakeText  
236 - capture page screenshot  
237 - submit form and check result ${qualification_form_submit_btn_locator} ${qualification_form_cancel_success_msg} ${tender_created_checker_element_locator}  
238 -  
239 -#qualification awawd reporting and negotiotion  
240 -confirm award  
241 - [Arguments] ${document}  
242 - [Documentation] Перевести постачальника в статус active.  
243 -  
244 - run keyword and ignore error run keyword if '${mode}' in 'negotiation reporting' Wait Until Page Contains ${award_form_negotiation_submit_success_msg} 10  
245 -# run keyword and ignore error run keyword if '${mode}' in 'negotiation reporting' wait until alert is visible ${award_form_negotiation_submit_success_msg}  
246 - run keyword and ignore error run keyword if '${mode}' in 'negotiation reporting' close current visible alert  
247 -  
248 - capture page screenshot  
249 - wait until page contains element with reloading ${qualification_form_0_open_btn_locator}  
250 - open popup by btn locator ${qualification_form_0_open_btn_locator}  
251 -# ${file_path} ${file_name} ${file_content} = create_fake_doc  
252 - Execute Javascript $('#qualificationform-decision').val('accept').change()  
253 - capture page screenshot  
254 -# run keyword and ignore error wait until page contains element ${award_form_qualified_input_locator}  
255 - capture page screenshot  
256 - run keyword and ignore error click visible element ${award_form_qualified_input_locator}  
257 - choose file ${add_file_to_qualification_form_locator} ${document}  
258 -# wait until page does not contain element ${popup_dynamic_form_loading_element_locator} 60  
259 - wait until element is visible ${qualification_form_add_document_type_input_locator} 60  
260 -# submit current visible popup  
261 -  
262 - Run Keyword And Ignore Error Execute Javascript $('.fancybox-is-open .fancybox-content select[id*="-document_type"]:last').val('winningBid').change()  
263 - capture page screenshot  
264 - click visible element ${qualification_form_add_document_description_btn_locator}  
265 - capture page screenshot  
266 - wait until element is visible ${qualification_form_add_document_description_input_locator}  
267 - input text to exist visible input ${qualification_form_add_document_description_input_locator} test2  
268 - capture page screenshot  
269 - click visible element ${qualification_form_add_document_close_description_btn_locator}  
270 - capture page screenshot  
271 -  
272 -# run keyword and ignore error run keyword if '${mode}' in 'reporting' submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_form_submit_success_msg}  
273 - capture page screenshot  
274 -# run keyword and ignore error run keyword if '${mode}' in 'reporting' wait until page contains element with reloading ${qualification_form_0_open_btn_locator}  
275 - capture page screenshot  
276 -# run keyword and ignore error run keyword if '${mode}' in 'reporting' open popup by btn locator ${qualification_form_0_open_btn_locator}  
277 - run keyword and ignore error run keyword if '${mode}' in 'reporting' Execute Javascript $('[id$="qualificationform-tender_not_signed_qualification_confirmation_required"]').click()  
278 - capture page screenshot  
279 -# run keyword and ignore error run keyword if '${mode}' in 'reporting' Execute Javascript $('#qualificationform-decision').val('accept').change()  
280 - run keyword and ignore error run keyword if '${mode}' in 'negotiation' Execute Javascript $('[id$="qualificationform-qualified"]').click()  
281 - capture page screenshot  
282 - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_form_submit_success_msg} ${qualification_form_submit_btn_locator}  
283 - capture page screenshot  
284 - run keyword and ignore error click visible element ${qualification_ecp_check_input_locator}  
285 - capture page screenshot  
286 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
287 -# run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${None} ${qualification_ecp_form_open_locator}  
288 - Execute Javascript $('.fancybox-is-open .fancybox-content button.btn.btn-success').click()  
289 -# click visible element ${qualification_form_submit_btn_locator}  
290 - capture page screenshot  
291 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
292 - wait until element is visible ${qualification_ecp_form_open_locator} 60  
293 - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10  
294 - capture page screenshot  
295 - run keyword and ignore error Load Sign  
296 - capture page screenshot  
297 - wait until element is visible ${qualification_form_submit_btn_locator} 60  
298 - run keyword and ignore error wait until element is visible ${tender_status_active_qualification_value_locator} 10  
299 - capture page screenshot  
300 - run keyword and ignore error submit form and check result ${qualification_form_submit_btn_locator} ${qualification_award_after_ecp_form_submit_success_msg} ${None}  
301 - capture page screenshot  
302 -  
303 -confirm awards  
304 - [Documentation] Перевести постачальників для тендера tender_uaid  
305 - ... в статус active.  
306 -  
307 - wait until page contains element with reloading ${qualification_agreement_form_approve_submit_btn_locator} 720 30  
308 - click visible element ${qualification_agreement_form_approve_submit_btn_locator}  
309 - wait until page contains ${qualification_agreement_form_approve_question_msg}  
310 - Execute Javascript ${qualification_form_approve_js_submit_btn_locator}  
311 - Wait Until Page Contains ${qualification_agreement_form_approve_success_msg} 60  
312 - wait until alert is visible ${qualification_agreement_form_approve_success_msg}  
313 - run keyword and ignore error run keyword if condition is not none ${qualification_agreement_form_approve_success_msg} close current visible alert  
314 - Wait Until Keyword Succeeds 800 s 20 s Wait For QualificationsPeriodEnd  
315 -  
316 -  
1 -*** Variables ***  
2 -  
3 -#qualification  
4 -${prequalification_form_0_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index="0"] a[href*="/tender/prequalification"]  
5 -${prequalification_form_1_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index="1"] a[href*="/tender/prequalification"]  
6 -${prequalification_form_2_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index="2"] a[href*="/tender/prequalification"]  
7 -${prequalification_form_3_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index="3"] a[href*="/tender/prequalification"]  
8 -${prequalification_form_-1_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-negative-index="-1"] a[href*="/tender/prequalification"]  
9 -${prequalification_form_-2_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-negative-index="-2"] a[href*="/tender/prequalification"]  
10 -${prequalification_form_last_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[qualification-index-last] a[href*="/tender/prequalification"]  
11 -${prequalification_form_approve_open_btn_locator} = jquery=.aside__inner a[href*="/tender/prequalification-approve"]  
12 -${prequalification_form_accept_input_locator} = $('#prequalificationform-decision').val('accept').change()  
13 -${prequalification_form_decline_input_locator} = $('#prequalificationform-decision').val('decline').change()  
14 -${prequalification_form_cancel_input_locator} = $('#prequalificationform-decision').val('cancel').change()  
15 -${prequalification_form_eligible_input_locator} = jquery=#prequalificationform-eligible  
16 -${prequalification_form_qualified_input_locator} = jquery=#prequalificationform-qualified  
17 -${qualification_form_reasons_cancellation_input_locator} = jquery=.fancybox-is-open .select2-search__field  
18 -${prequalification_form_title_cancellation_input_locator} = $('#prequalificationform-title').val('Тендерна пропозиція не відповідає вимогам тендерної документації').change()  
19 -${prequalification_form_description_cancellation_input_locator} = jquery=#prequalificationform-description  
20 -  
21 -${qualification_form_submit_success_msg} = Пропозиція прийнята  
22 -${qualification_form_decline_success_msg} = Пропозиція відхилена  
23 -${qualification_form_cancel_success_msg} = Рішення скасоване  
24 -${qualification_form_cancell_success_msg} = Рішення завантажене, тепер потрібно накласти ЕЦП/КЕП.  
25 -${qualification_form_approve_question_msg} = Ви впевнені що бажаєте завершити прекваліфікацію і перейти до наступного етапу?  
26 -${qualification_form_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.btn.btn-success  
27 -${qualification_form_approve_submit_btn_locator} = jquery=.jconfirm-box-container .btn.btn-default  
28 -${qualification_form_approve_success_msg} = Прекваліфікація підтверджена, дочекайтесь опублікування на сайті уповноваженого органу.  
29 -${qualification_form_approve_js_submit_btn_locator} = $('.jconfirm-box-container .btn.btn-default').click()  
30 -${qualification_agreement_form_approve_submit_btn_locator} = jquery=.aside__inner a.js-qualification-approve  
31 -${qualification_agreement_form_approve_success_msg} = Кваліфікація підтверджена, дочекайтесь опублікування на сайті уповноваженого органу.  
32 -${qualification_agreement_form_approve_question_msg} = Ви впевнені що бажаєте завершити кваліфікацію і перейти до наступного етапу?  
33 -  
34 -${qualification_form_0_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index="0"] a[href*="/tender/qualification"]  
35 -${qualification_form_1_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index="1"] a[href*="/tender/qualification"]  
36 -${qualification_form_2_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index="2"] a[href*="/tender/qualification"]  
37 -${qualification_form_3_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index="3"] a[href*="/tender/qualification"]  
38 -${qualification_form_last_open_btn_locator} = jquery=#bids-pjax .pseudo-table__row[award-index-last] a[href*="/tender/qualification"]  
39 -${qualification_form_eligible_input_locator} = jquery=#qualificationform-eligible  
40 -${qualification_form_qualified_input_locator} = jquery=#qualificationform-qualified  
41 -${qualification_award_form_submit_success_msg} = Рішення завантажене, тепер потрібно накласти ЕЦП/КЕП.  
42 -${qualification_award_after_ecp_form_submit_success_msg} = Рішення підтверджене, очікує опублікування на сайті уповноваженого органу.  
43 -${qualification_ecp_form_submit_success_msg} = ЕЦП/КЕП успішно накладено  
44 -#${qualification_ecp_form_submit_success_msg} = ЕЦП/КЕП успішно накладено на рішення, тепер потрібно підтвердити рішення.  
45 -${qualification_ecp_form_open_locator} = jquery=.modal.modal-xs.fancybox-content  
46 -${qualification_ecp_check_input_locator} = jquery=input[id$="form-signing"]  
47 -${qualification_award_form_title_cancellation_input_locator} = $('#qualificationform-title').val('Тендерна пропозиція не відповідає вимогам тендерної документації').change()  
48 -${qualification_award_form_title_decline_input_locator} = $('#qualificationform-title').val('Переможець відмовився від підписання договору про закупівлю відповідно до вимог тендерної документації або укладення договору про закупівлю').change()  
49 -${qualification_form_description_cancellation_input_locator} = jquery=#qualificationform-description  
50 -${qualification_form_approve_open_btn_locator} = jquery=.aside__inner a[href*="/tender/qualification-approve"]  
51 -${qualification_form_accept_input_locator} = $('#qualificationform-decision').val('accept').change()  
52 -${qualification_form_decline_input_locator} = $('#qualificationform-decision').val('decline').change()  
53 -${add_file_to_qualification_form_locator} = jquery=.field-qualificationform-documents .js-upload-documents input[type$="file"]:first  
54 -${qualification_form_cancel_input_locator} = $('#qualificationform-decision').val('cancel').change()  
55 -${qualification_form_add_document_type_input_locator} = jquery=.js-dynamic-form-content-item:last .document-type select[id*="-document_type"]  
56 -${qualification_form_add_document_description_btn_locator} = jquery=.js-dynamic-form-content-item:last [href$="#edit"]:last  
57 -${qualification_form_add_document_description_input_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in textarea[id*="-description"].form-control  
58 -${qualification_form_add_document_close_description_btn_locator} = jquery=#qualification-documents .js-actions-wrapper:last .popover.fade.top.in [href$="#close"]  
59 -#${qualification_form_add_document_close_description_btn_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in [href$="#close"]  
60 -  
61 -#award reporting and negotiotion  
62 -${award_form_qualified_input_locator} = jquery=#qualificationform-qualified  
63 -${award_form_negotiation_submit_success_msg} = Інформація о постачальниках успішно онвлена.  
64 -  
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_question_variables.robot  
5 -  
6 -*** Keywords ***  
7 -  
8 -add question  
9 - [Arguments] ${username} ${tender_uaid} ${type} ${type_id} ${question}  
10 - [Documentation] Створити запитання з question в описі для тендера tender_uaid.  
11 -  
12 - click visible element ${question_form_open_btn_locator}  
13 - open popup by btn locator ${question_form_open_create_btn_locator}  
14 - Wait Until Page Contains ${popup_opened_content_success_locator} 60  
15 - wait until element is visible ${question_form_create_questionform_title_input_locator} 60  
16 - wait until popup is visible  
17 -# input text to exist visible input ${question_form_open_form_answer_input_locator} ${question.data.answer}  
18 - Run Keyword If '${type}' == 'tender' Select From List By Label ${question_form_create_questionform_related_of_input_locator} Закупівля  
19 - Run Keyword If '${type}' == 'lot' Select From List By Label ${question_form_create_questionform_related_of_input_locator} Лот  
20 - Run Keyword If '${type}' == 'lot' run keyword and ignore error Click Element ${question_form_create_questionform_related_lot_input_locator}  
21 - ${question_form_create_questionform_related_lot_input_locator} = Run Keyword If '${type}' == 'lot' replace string ${question_form_create_questionform_related_lot_input_locator_tpl} %type_id% ${type_id}  
22 - Run Keyword If '${type}' == 'lot' run keyword and ignore error Click Element ${question_form_create_questionform_related_lot_input_locator}  
23 - Run Keyword If '${type}' == 'item' Select From List By Label ${question_form_create_questionform_related_of_input_locator} Предмет закупівлі  
24 - Run Keyword If '${type}' == 'item' run keyword and ignore error Click Element ${question_form_create_questionform_related_item_input_locator}  
25 - ${question_form_create_questionform_related_item_input_locator} = Run Keyword If '${type}' == 'item' replace string ${question_form_create_questionform_related_item_input_locator_tpl} %type_id% ${type_id}  
26 - Run Keyword If '${type}' == 'item' run keyword and ignore error Click Element ${question_questionform_related_item_input_locator}  
27 - input text to exist visible input ${question_form_create_questionform_title_input_locator} ${question.data.title}  
28 - input text to exist visible input ${question_form_create_questionform_description_input_locator} ${question.data.description}  
29 - submit form and check result ${question_form_answer_submit_btn_locator} ${question_form_submit_success_msg} ${tender_created_checker_element_locator} ${true}  
30 -# click visible element ${question_form_answer_submit_btn_locator}  
31 - wait until page does not contain element with reloading ${tender_sync_element_locator}  
32 - sleep 5  
33 -  
34 -answer question  
35 - [Arguments] ${answer_data} ${question_id}  
36 - [Documentation] Дати відповідь answer_data на запитання з question_id в описі для тендера tender_uaid.  
37 -  
38 - click visible element ${question_form_open_btn_locator}  
39 - ${question_open_form_answer_locator} = replace string ${question_open_form_answer_btn_locator_tpl} %title% ${question_id}  
40 - wait until page contains element with reloading ${question_open_form_answer_locator}  
41 - ${question_form_open_form_answer_btn_locator} = replace string ${question_form_open_form_answer_btn_locator_tpl} %title% ${question_id}  
42 - wait until page contains element with reloading ${question_form_open_form_answer_btn_locator}  
43 - open popup by btn locator ${question_form_open_form_answer_btn_locator}  
44 - input text to exist visible input ${question_answer_form_answer_input_locator} ${answer_data.data.answer}  
45 - submit form and check result ${question_answer_form_submit_btn_locator} ${question_form_submit_answer_success_msg} ${true}  
46 -  
47 -get question information  
48 - [Arguments] ${question_id} ${field_name}  
49 - [Documentation] Отримати значення поля field_name із запитання з question_id  
50 - ... в описі для тендера tender_uaid.  
51 -  
52 - submit form and check result ${bid_form_refresh_btn_locator} ${bid_form_refresh_success_msg} ${tender_created_checker_element_locator} ${true}  
53 - click visible element ${question_form_open_btn_locator}  
54 - ${question_open_form_answer_locator} = replace string ${question_open_form_answer_btn_locator_tpl} %title% ${question_id}  
55 - wait until page contains element with reloading ${question_open_form_answer_locator}  
56 - ${question_title_value_locator} = Run Keyword If 'title' == '${field_name}' replace string ${question_title_value_locator_tpl} %title% ${question_id}  
57 - ${question_answer_value_locator} = Run Keyword If 'answer' == '${field_name}' replace string ${question_answer_value_locator_tpl} %title% ${question_id}  
58 - ${question_description_value_locator} = Run Keyword If 'description' == '${field_name}' replace string ${question_description_value_locator_tpl} %title% ${question_id}  
59 - Run Keyword If 'answer' == '${field_name}' wait until page contains element with reloading ${question_answer_value_locator}  
60 - ${return_value} = Run Keyword If 'title' == '${field_name}' get_text ${question_title_value_locator}  
61 - ... ELSE Run Keyword If 'answer' == '${field_name}' get_text ${question_answer_value_locator}  
62 - ... ELSE Run Keyword If 'description' == '${field_name}' get_text ${question_description_value_locator}  
63 - [Return] ${return_value}  
64 -  
65 -  
1 -*** Variables ***  
2 -  
3 -#question  
4 -${question_form_open_btn_locator} = jquery=#aside-part-pjax a[href*="/tender/questions"]  
5 -${question_open_form_answer_btn_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"]  
6 -#${question_open_form_answer_js_btn_locator_tpl} = $('#tender-question-list .js-item div[data-title*="%title%"] .btn.btn-default').click()  
7 -#${question_form_open_form_answer_btn_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] .btn.btn-default  
8 -${question_open_form_answer_js_btn_locator_tpl} = $('#tender-question-list .js-item div[data-title*="%title%"] .btn.btn-success.btn-custom').click()  
9 -${question_form_open_form_answer_btn_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] .btn.btn-success.btn-custom  
10 -${question_form_open_form_answer_input_locator} = jquery=.fancybox-is-open .fancybox-content #tender-question-answer-form #questionanswerform-answer  
11 -${question_form_answer_submit_btn_locator} = jquery=.fancybox-is-open .fancybox-content button.js-submit-btn  
12 -${question_form_submit_answer_success_msg} = Відповідь на питання успішно надана.  
13 -${question_form_create_question_btn_locator} = jquery=#aside-part-pjax [data-url*="/tender/question-create"]  
14 -${question_form_create_questionform_related_of_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-related_of  
15 -${question_form_create_questionform_related_item_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-related_item  
16 -${question_form_create_questionform_related_item_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content #questionform-related_item option:contains("%type_id%")  
17 -${question_form_create_questionform_title_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-title  
18 -${question_form_create_questionform_description_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-description  
19 -${question_form_submit_success_msg} = Запитання створене.  
20 -${question_form_create_questionform_related_lot_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-related_lot  
21 -${question_form_create_questionform_related_lot_input_locator} = jquery=.fancybox-is-open .fancybox-content #questionform-related_lot  
22 -${question_form_create_questionform_related_lot_input_locator_tpl} = jquery=.fancybox-is-open .fancybox-content #questionform-related_lot option:contains("%type_id%")  
23 -${question_form_open_create_btn_locator} = jquery=#tender-part-pjax a[href*="/tender/question-create"]:first  
24 -  
25 -${question_answer_form_answer_input_locator} = jquery=#questionanswerform-answer  
26 -${question_answer_form_submit_btn_locator} = jquery=#tender-question-answer-form .js-submit-btn  
27 -  
28 -#for viewer  
29 -${question_answer_value_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] .info-row.answer span.value  
30 -${question_title_value_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] h4.callout__title  
31 -${question_description_value_locator_tpl} = jquery=#tender-question-list .js-item div[data-title*="%title%"] .info-row.description span.value  
32 -  
33 -${popup_locator} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content  
34 -  
1 -# -*- coding: utf-8 -  
2 -import re  
3 -import copy  
4 -import urllib  
5 -import urllib3  
6 -import string  
7 -  
8 -import dateutil.parser  
9 -from iso8601 import parse_date  
10 -from robot.libraries.BuiltIn import BuiltIn  
11 -from datetime import datetime, timedelta  
12 -import pytz  
13 -  
14 -TZ = pytz.timezone('Europe/Kiev')  
15 -  
16 -def get_library():  
17 - return BuiltIn().get_library_instance('Selenium2Library')  
18 -  
19 -  
20 -def get_webdriver_instance():  
21 - return get_library()._current_browser()  
22 -  
23 -  
24 -# return of variable is None  
25 -def get_variable_is_none(variable):  
26 - if variable is None:  
27 - return True  
28 - return False  
29 -  
30 -  
31 -# run specified keyword if condition is not none type  
32 -def run_keyword_if_condition_is_not_none(condition, name, *args):  
33 - if get_variable_is_none(condition) == False:  
34 - BuiltIn().run_keyword(name, *args)  
35 -  
36 -  
37 -# run specified keyword if condition is none type  
38 -def run_keyword_if_condition_is_none(condition, name, *args):  
39 - if get_variable_is_none(condition) == True:  
40 - BuiltIn().run_keyword(name, *args)  
41 -  
42 -  
43 -# return value for *keys (nested) in `element` (dict).  
44 -def get_from_dictionary_by_keys(element, *keys):  
45 - if not isinstance(element, dict):  
46 - raise AttributeError('keys_exists() expects dict as first argument.')  
47 - if len(keys) == 0:  
48 - raise AttributeError('keys_exists() expects at least two arguments, one given.')  
49 -  
50 - _element = element  
51 - for key in keys:  
52 - try:  
53 - _element = _element[key]  
54 - except KeyError:  
55 - return None  
56 - return _element  
57 -  
58 -  
59 -# returns if element exists on page. optimization  
60 -def get_is_element_exist(locator):  
61 - jquery_locator = convert_locator_to_jquery(locator)  
62 - if get_variable_is_none(jquery_locator) == False:  
63 - jquery_locator = jquery_locator.replace('"', '\\"')  
64 - length = get_webdriver_instance().execute_script('return $("' + jquery_locator + '").length;')  
65 - return length > 0  
66 -  
67 - try:  
68 - get_library()._element_find(locator, None, True)  
69 - except Exception:  
70 - return False  
71 - return True  
72 -  
73 -  
74 -# click  
75 -def js_click_element(locator):  
76 - element = get_library()._element_find(locator, None, True)  
77 - get_webdriver_instance().execute_script(  
78 - 'var $el = jQuery(arguments[0]); if($el.length) $el.click();',  
79 - element  
80 - )  
81 -  
82 -  
83 -# convert locator to jquery locator  
84 -def convert_locator_to_jquery(locator):  
85 - locator_params = locator.split('=', 1)  
86 - if locator_params[0] == 'id':  
87 - return '#' + locator_params[1]  
88 - if locator_params[0] == 'jquery':  
89 - return locator_params[1]  
90 - if locator_params[0] == 'css':  
91 - return locator_params[1]  
92 - return None  
93 -  
94 -  
95 -# set scroll to element in view  
96 -def set_element_scroll_into_view(locator):  
97 - element = get_library()._element_find(locator, None, True)  
98 - get_webdriver_instance().execute_script(  
99 - 'var $el = jQuery(arguments[0]); if($el.length) $el.get(0).scrollIntoView();',  
100 - element  
101 - )  
102 -  
103 -  
104 -# return text/value by specified locator  
105 -def get_value_by_locator(locator):  
106 - element = get_library()._element_find(locator, None, True)  
107 - text = get_webdriver_instance().execute_script(  
108 - 'var $element = jQuery(arguments[0]);'  
109 - 'if($element.is("input[type=checkbox]")) return $element.is(":checked") ? "1":"0";'  
110 - 'if($element.is("input,textarea,select")) return $element.val();'  
111 - 'return $element.text();',  
112 - element  
113 - )  
114 - return text  
115 -  
116 -  
117 -# input text to hidden input  
118 -def input_text_to_hidden_input(locator, text):  
119 - element = get_library()._element_find(locator, None, True)  
120 - get_webdriver_instance().execute_script(  
121 - 'jQuery(arguments[0]).val("' + text.replace('"', '\\"') + '");',  
122 - element  
123 - )  
124 -  
125 -  
126 -# select option by label for hidden select  
127 -def select_from_hidden_list_by_label(locator, label):  
128 - element = get_library()._element_find(locator, None, True)  
129 - get_webdriver_instance().execute_script(  
130 - 'var $option = jQuery("option:contains(' + label.replace('"', '\\"') + ')", arguments[0]);' +  
131 - 'if($option.length) jQuery(arguments[0]).val($option.attr("value"));',  
132 - element  
133 - )  
134 -  
135 -  
136 -# trigger change event for input by locator  
137 -def trigger_input_change_event(locator):  
138 - element = get_library()._element_find(locator, None, True)  
139 - get_webdriver_instance().execute_script(  
140 - 'var $el = jQuery(arguments[0]); if($el.length) $el.trigger("change");',  
141 - element  
142 - )  
143 -  
144 -  
145 -# convert all numners to string  
146 -def convert_float_to_string(number):  
147 - return repr(float(number))  
148 -  
149 -  
150 -def convert_esco__float_to_string(number):  
151 - return '{0:.5f}'.format(float(number))  
152 -  
153 -  
154 -def convert_float_to_string_3f(number):  
155 - return '{0:.3f}'.format(float(number))  
156 -  
157 -  
158 -# convert any variable to specified type  
159 -def convert_to_specified_type(value, type):  
160 - value = "%s" % (value)  
161 - if type == 'integer':  
162 - value = value.split()  
163 - value = ''.join(value)  
164 - print(value)  
165 - value = int(value)  
166 - if type == 'float':  
167 - value = value.split()  
168 - value = ''.join(value)  
169 - print(value)  
170 - value = float(value)  
171 - return value  
172 -  
173 -  
174 -# prepare isodate in needed format  
175 -def isodate_format(isodate, format):  
176 - iso_dt = parse_date(isodate)  
177 - return iso_dt.strftime(format)  
178 -  
179 -  
180 -def procuring_entity_name(tender_data):  
181 - tender_data.data.procuringEntity['name'] = u"ТОВ \"ПлейТендер\""  
182 - tender_data.data.procuringEntity['name_en'] = u"TOV \"playtender\""  
183 - tender_data.data.procuringEntity.identifier['id'] = u"1234567890-playtender"  
184 - tender_data.data.procuringEntity.identifier['legalName'] = u"ТОВ \"ПлейТендер\""  
185 - tender_data.data.procuringEntity.identifier['legalName_en'] = u"TOV \"playtender\""  
186 - if 'address' in tender_data.data.procuringEntity:  
187 - tender_data.data.procuringEntity.address['region'] = u"м. Київ"  
188 - tender_data.data.procuringEntity.address['postalCode'] = u"123123"  
189 - tender_data.data.procuringEntity.address['locality'] = u"Київ"  
190 - tender_data.data.procuringEntity.address['streetAddress'] = u"address"  
191 - if 'contactPoint' in tender_data.data.procuringEntity:  
192 - tender_data.data.procuringEntity.contactPoint['name'] = u"Test ЗамовникОборони"  
193 - tender_data.data.procuringEntity.contactPoint['name_en'] = u"Test"  
194 - tender_data.data.procuringEntity.contactPoint['email'] = u"chuzhin@mail.ua"  
195 - tender_data.data.procuringEntity.contactPoint['telephone'] = u"+3801111111111"  
196 - tender_data.data.procuringEntity.contactPoint['url'] = u"http://playtender.com.ua"  
197 - if 'buyers' in tender_data.data:  
198 - tender_data.data.buyers[0]['name'] = u"ТОВ \"ПлейТендер\""  
199 - tender_data.data.buyers[0].identifier['id'] = u"1234567890-playtender"  
200 - tender_data.data.buyers[0].identifier['legalName'] = u"ТОВ \"ПлейТендер\""  
201 - return tender_data  
202 -  
203 -# prepare data  
204 -def prepare_procuring_entity_data(data):  
205 - try:  
206 - data['name'] = u"Playtender"  
207 - data.identifier['id'] = u"playtender"  
208 - data.identifier['legalName'] = u"Playtender"  
209 - data.identifier['scheme'] = u"UA-EDR"  
210 - if 'name_en' in data:  
211 - data['name_en'] = u"Playtender"  
212 - if 'legalName_en' in data.identifier:  
213 - data.identifier['legalName_en'] = u"Playtender"  
214 - if 'address' in data:  
215 - data.address['countryName'] = u"Україна"  
216 - data.address['locality'] = u"Київ"  
217 - data.address['postalCode'] = u"01111"  
218 - data.address['region'] = u"місто Київ"  
219 - data.address['streetAddress'] = u"вулиця Тестова, 220, 8"  
220 - if 'contactPoint' in data:  
221 - data.contactPoint['email'] = u"chuzhin@mail.ua"  
222 - data.contactPoint['faxNumber'] = u"+3801111111111"  
223 - data.contactPoint['telephone'] = u"+3801111111111"  
224 - data.contactPoint['name'] = u"Test"  
225 - if 'name_en' in data.contactPoint:  
226 - data.contactPoint['name_en'] = u"Test"  
227 - data.contactPoint['url'] = u"https://playtender.com.ua"  
228 - except Exception:  
229 - raise Exception('data is not a dictionary')  
230 -  
231 -  
232 -# prepare data  
233 -def prepare_buyers_data(data):  
234 - if type(data) is not list:  
235 - raise Exception('data is not a list')  
236 -  
237 - # preventing console errors about changing buyer data in cases  
238 - if len(data) != 1:  
239 - return  
240 -  
241 - item = next(iter(data), None)  
242 - item['name'] = u"Playtender"  
243 - item.identifier['id'] = u"playtender"  
244 - item.identifier['legalName'] = u"Playtender"  
245 - item.identifier['scheme'] = u"UA-EDR"  
246 -  
247 -  
248 -# prepare dictionary from field path + value  
249 -def generate_dictionary_from_field_path_and_value(path, value):  
250 - data = dict()  
251 - path_keys_list = path.split('.')  
252 - if len(path_keys_list) > 1:  
253 - key = path_keys_list.pop(0)  
254 - value = generate_dictionary_from_field_path_and_value('.'.join(path_keys_list), value)  
255 - indexRegex = re.compile(r'(\[(\d+)\]$)')  
256 - matchObj = indexRegex.search(key)  
257 - print matchObj  
258 - if matchObj:  
259 - key = indexRegex.sub('', key)  
260 - value['list_index'] = matchObj.group(2)  
261 - value = [value]  
262 - data[key] = value  
263 - else:  
264 - data = dict()  
265 - data[path] = value  
266 - return data  
267 -  
268 -  
269 -# Percentage conversion  
270 -def multiply_hundred(number):  
271 - return number * 100  
272 -  
273 -  
274 -# prepares data for filling form in easiest way  
275 -def prepare_tender_data(data_original):  
276 - # preventing change data in global view  
277 - data = copy.deepcopy(data_original)  
278 -  
279 - # check if data is for multilot  
280 - if 'lots' not in data:  
281 - return data  
282 -  
283 - # moves features to its related items  
284 - if 'features' in data:  
285 - i = 0  
286 - l = len(data['features'])  
287 - while i < l:  
288 - if data['features'][i]['featureOf'] == 'lot':  
289 - for lot in data['lots']:  
290 - if lot['id'] == data['features'][i]['relatedItem']:  
291 - if 'features' not in lot:  
292 - lot['features'] = []  
293 - lot['features'].append(data['features'].pop(i))  
294 - l = l - 1  
295 - i = i - 1  
296 - break  
297 - if data['features'][i]['featureOf'] == 'item':  
298 - for item in data['items']:  
299 - if item['id'] == data['features'][i]['relatedItem']:  
300 - if 'features' not in item:  
301 - item['features'] = []  
302 - item['features'].append(data['features'].pop(i))  
303 - l = l - 1  
304 - i = i - 1  
305 - break  
306 - i = i + 1  
307 -  
308 - if 'features' in data:  
309 - if len(data['features']) == 0:  
310 - del data['features']  
311 -  
312 - # moves items to its related lots  
313 - i = 0  
314 - l = len(data['items'])  
315 - while i < l:  
316 - for lot in data['lots']:  
317 - if lot['id'] == data['items'][i]['relatedLot']:  
318 - if 'items' not in lot:  
319 - lot['items'] = []  
320 - lot['items'].append(data['items'].pop(i))  
321 - l = l - 1  
322 - i = i - 1  
323 - break  
324 - i = i + 1  
325 -  
326 - del data['items']  
327 -  
328 - if 'milestones' not in data:  
329 - return data  
330 - # moves milestones to its related lots  
331 - i = 0  
332 - l = len(data['milestones'])  
333 - while i < l:  
334 - for lot in data['lots']:  
335 - if lot['id'] == data['milestones'][i]['relatedLot']:  
336 - if 'milestones' not in lot:  
337 - lot['milestones'] = []  
338 - lot['milestones'].append(data['milestones'].pop(i))  
339 - l = l - 1  
340 - i = i - 1  
341 - break  
342 - i = i + 1  
343 -  
344 - del data['milestones']  
345 -  
346 - return data  
347 -  
348 -  
349 -def split_agreementDuration(str, type):  
350 - if type in 'year':  
351 - year_temp = str.split('Y', 1)  
352 - value = year_temp[0].split('P', 1)  
353 - elif type in 'month':  
354 - month_temp = str.split('M', 1)  
355 - value = month_temp[0].split('Y', 1)  
356 - else:  
357 - day_temp = str.split('D', 1)  
358 - value = day_temp[0].split('M', 1)  
359 - return value[1]  
360 -  
361 -  
362 -def convert_date_to_string_contr(date):  
363 - date = dateutil.parser.parse(date)  
364 - date = date.strftime("%d.%m.%Y %H:%M:%S")  
365 - return date  
366 -  
367 -def get_value_minimalStepPercentage(value):  
368 - value = value / 100  
369 - return value  
370 -  
371 -def set_value_minimalStepPercentage(value):  
372 - value = value * 100  
373 - return value  
374 -  
375 -def convert_esco__float_to_string(number):  
376 - return '{0:.5f}'.format(float(number))  
377 -  
378 -def convert_string_to_float(number):  
379 - return float(number)  
380 -  
381 -def download_file(url, file_name, output_dir):  
382 - urllib.urlretrieve(url, ('{}/{}'.format(output_dir, file_name)))  
383 -  
384 -def parse_complaintPeriod_date(date_string):  
385 - date_str = datetime.strptime(date_string, "%d.%m.%Y %H:%M")  
386 - date = datetime(date_str.year, date_str.month, date_str.day, date_str.hour, date_str.minute, date_str.second,  
387 - date_str.microsecond)  
388 - date = TZ.localize(date).isoformat()  
389 - return date  
390 -  
391 -def parse_deliveryPeriod_date1(date):  
392 - date = dateutil.parser.parse(date)  
393 - date = date.strftime("%d.%m.%Y")  
394 - return date  
395 -  
396 -def parse_deliveryPeriod_date(date_string):  
397 -# date_str = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%S+03:00")  
398 - if '+03' in date_string:  
399 - date_str = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%S+03:00")  
400 - else:  
401 - date_str = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%S+02:00")  
402 - date = datetime(date_str.year, date_str.month, date_str.day)  
403 - date = date.strftime("%d.%m.%Y")  
404 - return date  
405 -  
406 -def split_joinvalue(str_value):  
407 - str_value = str_value.split()  
408 - str_value = ''.join(str_value)  
409 - print(str_value)  
410 - str_value.replace(" ", "")  
411 - return str_value  
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_variables.robot  
5 -Resource playtender_question.robot  
6 -Resource playtender_claim.robot  
7 -Resource playtender_bid.robot  
8 -Resource playtender_viewer.robot  
9 -  
10 -*** Keywords ***  
11 -  
12 -open new tender form  
13 - [Documentation] відкриття сторінки створення тендеру  
14 -  
15 - open page and wait element by locator ${broker_baseurl}/tender/create ${tender_form_locator}  
16 -  
17 -update tender queue  
18 - [Documentation] запускає оновлення тендерів з ЦБД і додає їх в чергу, тобто синхронізація може відбутися не відразу  
19 - ... поточна сторіка повертається  
20 -  
21 - ${current_url} = get location  
22 - go to ${broker_baseurl}/utils/queue-tender-update  
23 - go to ${current_url}  
24 -  
25 -open tender form by uaid  
26 - [Arguments] ${tender_uaid}  
27 - [Documentation] відкриття сторінки редагування плану  
28 -  
29 - open tender page by uaid ${tender_uaid}  
30 - click visible element and wait until page contains element ${tender_edit_btn_locator} ${tender_form_locator}  
31 -  
32 -open tender page by uaid  
33 - [Arguments] ${uaid}  
34 - [Documentation] відкриває сторінку з тендером  
35 -  
36 - open site page and wait content element ${broker_baseurl}/tender/${uaid}  
37 - ${is_tender_found} = get is element exist ${tender_view_checker_element_locator}  
38 - return from keyword if ${is_tender_found} == ${True}  
39 - ${is_tender_not_found} = get is 404 page  
40 - ${is_needed_to_update_and_wait_sync} = set variable if ${is_test_role_owner} == ${False} and ${is_tender_not_found} ${True} ${False}  
41 - run keyword if ${is_needed_to_update_and_wait_sync} update tender queue  
42 - run keyword if ${is_needed_to_update_and_wait_sync} wait until 404 page disappears  
43 - ${is_tender_found} = get is element exist ${tender_view_checker_element_locator}  
44 - run keyword if ${is_tender_found} == ${False} fail Opening tender page by uaid fails.  
45 -  
46 -  
47 -fill tender form  
48 - [Arguments] ${data}  
49 - [Documentation] заповнення форми з масива даних  
50 -  
51 - fill tender general info ${data}  
52 - ${features} = get from dictionary by keys ${data} features  
53 - run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_general_panel_add_feature_btn_locator}  
54 - ${items} = get from dictionary by keys ${data} items  
55 - run keyword if condition is not none ${items} fill tender form items ${items}  
56 - ${milestones} = get from dictionary by keys ${data} milestones  
57 - run keyword and ignore error run keyword if condition is not none ${milestones} fill tender form milestones ${milestones}  
58 - ${lots} = get from dictionary by keys ${data} lots  
59 - run keyword if condition is not none ${lots} fill tender form lots ${lots}  
60 - ${supplier_data} = op_robot_tests.tests_files.service_keywords . Test Supplier Data  
61 - ##### BOF - TMP for negotiation milestone 1 lot#####  
62 - run keyword if '${mode}' in 'reporting' Set Global Variable ${rep_val} ${data.value.amount}  
63 - ##### EOF - TMP #####  
64 - run keyword if '${mode}' in 'negotiation reporting' fill tender from award reporting ${data.value.amount} ${supplier_data.data.suppliers[0]}  
65 - Run Keyword And Ignore Error fill tender required documents  
66 - ${procurement_method_type} = get from dictionary by keys ${data} procurementMethodType  
67 - Run Keyword And Ignore Error run keyword if '${mode}' in 'openeu open_esco open_framework' or ('${mode}' == 'open_competitive_dialogue' and '${procurement_method_type}' == 'competitiveDialogueEU') fill tender contact person ${data}  
68 -# Run Keyword And Ignore Error Execute Javascript $('a.btn.btn-default.btn-update.js-form-popup-add').click()  
69 -  
70 -fill tender form 2 stage  
71 - [Arguments] ${data}  
72 - [Documentation] заповнення форми з масива даних  
73 -  
74 - fill tender general info 2 stage ${data}  
75 - ${features} = get from dictionary by keys ${data} features  
76 - run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_general_panel_add_feature_btn_locator}  
77 - ${items} = get from dictionary by keys ${data} items  
78 -# run keyword if condition is not none ${items} fill tender form items ${items}  
79 - run keyword if condition is not none ${items} fill tender form ${items}  
80 - ${milestones} = get from dictionary by keys ${data} milestones  
81 - run keyword and ignore error run keyword if condition is not none ${milestones} fill tender form milestones ${milestones}  
82 - ${lots} = get from dictionary by keys ${data} lots  
83 - run keyword if condition is not none ${lots} fill tender form lots 2 stage ${lots}  
84 - ${supplier_data} = op_robot_tests.tests_files.service_keywords . Test Supplier Data  
85 - run keyword if '${mode}' in 'negotiation reporting' fill tender from award reporting ${data.value.amount} ${supplier_data.data.suppliers[0]}  
86 - Run Keyword And Ignore Error fill tender required documents  
87 -  
88 -fill tender general info  
89 - [Arguments] ${data}  
90 - [Documentation] обирає потрібний тип закупівлі, чекає оновлення форми, вказує мультилотовість, заповнює  
91 - ... приховані поля + відкриває попап основних даних, заповнює його і закриває  
92 -  
93 - Execute Javascript $(window).scrollTop(0)  
94 - wait until page does not contain element ${tender_load_form_after_mode_locator}  
95 - wait until page contains element ${tender_form_procurement_method_type_input_locator}  
96 - capture page screenshot  
97 - ${procurement_method_type} = get from dictionary by keys ${data} procurementMethodType  
98 - capture page screenshot  
99 - run keyword if condition is not none ${procurement_method_type} select from list by value ${tender_form_procurement_method_type_input_locator} ${procurement_method_type}  
100 - wait until page does not contain element ${tender_load_form_after_mode_locator}  
101 -  
102 - ${lots} = get from dictionary by keys ${data} lots  
103 - run keyword if condition is not none ${lots} Run Keyword And Ignore Error Execute Javascript $('[id$="form-is_multilot"]').click()  
104 - wait until page does not contain element ${tender_load_form_after_mode_locator} 20  
105 -  
106 - open popup by btn locator ${plan_form_general_panel_edit_btn_locator}  
107 - ${plan_path} = Get Variable Value ${ARTIFACT_FILE} artifact_plan.yaml  
108 - ${closeFrameworkAgreementSelectionUA_path} = Get Variable Value ${ARTIFACT_FILE} artifact.yaml  
109 - ${ARTIFACT} = load_data_from ${plan_path}  
110 - run keyword and ignore error run keyword if condition is not none ${ARTIFACT.tender_uaid} input text to visible input ${tender_form_general_tender_plan_id_locator} ${ARTIFACT.tender_uaid}  
111 - ${ARTIFACT2} = load_data_from ${closeFrameworkAgreementSelectionUA_path}  
112 - run keyword and ignore error run keyword if condition is not none ${ARTIFACT.tender_uaid} input text to visible input ${tender_form_general_agreementid_input_locator} ${ARTIFACT2.tender_uaid}  
113 - ${title} = get from dictionary by keys ${data} title  
114 - run keyword if condition is not none ${title} input text to visible input ${tender_form_general_tender_title_locator} ${title}  
115 - ${title_en} = get from dictionary by keys ${data} title_en  
116 - run keyword if condition is not none ${title} input text to exist visible input ${tender_form_general_tender_title_en_locator} ${title_en}  
117 - ${description} = get from dictionary by keys ${data} description  
118 - run keyword if condition is not none ${title} input text to visible input ${tender_form_general_tender_description_locator} ${description}  
119 - ${description_en} = get from dictionary by keys ${data} description_en  
120 - run keyword if condition is not none ${title} input text to exist visible input ${tender_form_general_tender_description_en_locator} ${description_en}  
121 - ${funders} = get from dictionary by keys ${data} funders  
122 - run keyword if condition is not none ${funders} Click Element ${tender_form_general_tender_funder_locator}  
123 - run keyword if condition is not none ${funders} fill tender form funders ${funders}  
124 - ${amount} = get from dictionary by keys ${data} value amount  
125 - run keyword and ignore error run keyword if condition is not none ${amount} run keyword and ignore error input number to exist visible input ${tender_form_general_value_amount_input_locator} ${amount}  
126 - ${currency} = get from dictionary by keys ${data} value currency  
127 - run keyword if condition is not none ${currency} select from visible list by value ${tender_form_general_value_currency_input_locator} ${currency}  
128 - ${value_added_tax_included} = get from dictionary by keys ${data} value valueAddedTaxIncluded  
129 - run keyword if condition is not none ${value_added_tax_included} run keyword if ${value_added_tax_included} Execute Javascript $('[id$="form-value_added_tax_included"]').click()  
130 -##run keyword and ignore error  
131 -  
132 -##click element ${tender_form_general_value_added_tax_input_locator}  
133 - Execute Javascript $('[id$="form-test_mode"]').click()  
134 - ${min_step_amount} = get from dictionary by keys ${data} minimalStep amount  
135 - run keyword if condition is not none ${min_step_amount} input number to exist visible input ${tender_form_general_minimalStep_amount_input_locator} ${min_step_amount}  
136 - ${main_procurement_category} = get from dictionary by keys ${data} mainProcurementCategory  
137 - run keyword if condition is not none ${main_procurement_category} select from visible list by value ${tender_form_general_main_procurement_category_input_locator} ${main_procurement_category}  
138 - ${tender_enquiry_period_start_date} = get from dictionary by keys ${data} enquiryPeriod startDate  
139 -# run keyword if condition is not none ${tender_enquiry_period_start_date} select from visible list by year of date ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}  
140 - run keyword and ignore error run keyword if condition is not none ${tender_enquiry_period_start_date} input datetime to visible input ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}  
141 - ${tender_enquiry_period_end_date} = get from dictionary by keys ${data} enquiryPeriod endDate  
142 -# run keyword if condition is not none ${tender_enquiry_period_start_date} select from visible list by year of date ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}  
143 - run keyword if condition is not none ${tender_enquiry_period_end_date} input datetime to visible input ${tender_enquiry_period_end_date_input_locator} ${tender_enquiry_period_end_date}  
144 - ${tender_start_date} = get from dictionary by keys ${data} tenderPeriod startDate  
145 - run keyword if condition is not none ${tender_start_date} run keyword and ignore error input datetime to visible input ${tender_tender_period_start_date_input_locator} ${tender_start_date}  
146 - ${tender_end_date} = get from dictionary by keys ${data} tenderPeriod endDate  
147 - run keyword if condition is not none ${tender_end_date} input datetime to visible input ${tender_tender_period_end_date_input_locator} ${tender_end_date}  
148 -# run keyword and ignore error click element ${tender_tender_quick_mode_locator}  
149 - run keyword and ignore error Execute Javascript $('[id$="form-quick_mode"]').click()  
150 - ${classification} = get from dictionary by keys ${data} classification  
151 - run keyword if condition is not none ${classification} select classification by code attributes ${plan_form_classification_edit_btn_locator} ${classification}  
152 - ${additional_classifications} = get from dictionary by keys ${data} additionalClassifications  
153 - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_additional_classification_edit_btn_locator} ${additional_classifications} ${None} ${kekv_schemes}  
154 - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_kekv_classification_edit_btn_locator} ${additional_classifications} ${kekv_schemes}  
155 - ${funding_kind} = get from dictionary by keys ${data} fundingKind  
156 - run keyword if condition is not none ${funding_kind} select from visible list by value ${tender_form_general_funding_kind_input_locator} ${funding_kind}  
157 -#esco  
158 - ${nbu_discount_rate} = get from dictionary by keys ${data} NBUdiscountRate  
159 - ${nbu_discount_rate} = Run keyword If '${nbu_discount_rate}' != '${None}' set_value_minimalStepPercentage ${nbu_discount_rate}  
160 - ${nbu_discount_rate} = Run keyword If '${nbu_discount_rate}' != '${None}' convert_esco__float_to_string ${nbu_discount_rate}  
161 - run keyword and ignore error run keyword if condition is not none ${nbu_discount_rate} input number to exist visible input ${tender_form_general_nbu_discount_rate_input_locator} ${nbu_discount_rate}  
162 -#closeframework  
163 - ${max_awards_count} = get from dictionary by keys ${data} maxAwardsCount  
164 - run keyword if condition is not none ${max_awards_count} input text to exist visible input ${tender_form_general_max_awards_count_input_locator} ${max_awards_count}  
165 - ${agreement_duration_years} = get from dictionary by keys ${data} agreementDuration  
166 - ${agreement_duration_years1}= Run keyword If '${agreement_duration_years}' != '${None}' split_agreementDuration ${agreement_duration_years} year  
167 - run keyword if condition is not none ${agreement_duration_years} select from visible list by value ${tender_form_general_agreement_duration_years_input_locator} ${agreement_duration_years1}  
168 - ${agreement_duration_months} = get from dictionary by keys ${data} agreementDuration  
169 - ${agreement_duration_months1}= Run keyword If '${agreement_duration_months}' != '${None}' split_agreementDuration ${agreement_duration_months} month  
170 - run keyword if condition is not none ${agreement_duration_months} select from visible list by value ${tender_form_general_agreement_duration_months_input_locator} ${agreement_duration_months1}  
171 - ${agreement_duration_days} = get from dictionary by keys ${data} agreementDuration  
172 - ${agreement_duration_days1}= Run keyword If '${agreement_duration_days}' != '${None}' split_agreementDuration ${agreement_duration_years} day  
173 - run keyword if condition is not none ${agreement_duration_days} select from visible list by value ${tender_form_general_agreement_duration_days_input_locator} ${agreement_duration_days1}  
174 -#closeFrameworkAgreementSelectionUA  
175 - ${max_awards_count} = get from dictionary by keys ${data} maxAwardsCount  
176 - run keyword if condition is not none ${max_awards_count} input text to exist visible input ${tender_form_general_max_awards_count_input_locator} ${max_awards_count}  
177 - ${agreement_duration_years} = get from dictionary by keys ${data} agreementDuration  
178 - ${agreement_duration_years1}= Run keyword If '${agreement_duration_years}' != '${None}' split_agreementDuration ${agreement_duration_years} year  
179 - run keyword if condition is not none ${agreement_duration_years} select from visible list by value ${tender_form_general_agreement_duration_years_input_locator} ${agreement_duration_years1}  
180 - ${agreement_duration_months} = get from dictionary by keys ${data} agreementDuration  
181 - ${agreement_duration_months1}= Run keyword If '${agreement_duration_months}' != '${None}' split_agreementDuration ${agreement_duration_months} month  
182 - run keyword if condition is not none ${agreement_duration_months} select from visible list by value ${tender_form_general_agreement_duration_months_input_locator} ${agreement_duration_months1}  
183 - ${agreement_duration_days} = get from dictionary by keys ${data} agreementDuration  
184 - ${agreement_duration_days1}= Run keyword If '${agreement_duration_days}' != '${None}' split_agreementDuration ${agreement_duration_years} day  
185 - run keyword if condition is not none ${agreement_duration_days} select from visible list by value ${tender_form_general_agreement_duration_days_input_locator} ${agreement_duration_days1}  
186 -#negotiation  
187 - ${cause} = get from dictionary by keys ${data} cause  
188 - run keyword if condition is not none ${cause} select from visible list by value ${tender_form_general_cause_input_locator} ${cause}  
189 - ${cause_description} = get from dictionary by keys ${data} causeDescription  
190 - run keyword if condition is not none ${cause_description} input text to visible input ${tender_form_general_cause_description_input_locator} ${cause_description}  
191 -#complaints  
192 - Run Keyword If '${SUITE_NAME}' == 'Tests Files.Complaints' click visible element ${tender_form_auction_skip_mode_input_locator}  
193 - submit current visible popup  
194 -  
195 -  
196 -fill tender general info 2 stage  
197 - [Arguments] ${data}  
198 - [Documentation] обирає потрібний тип закупівлі, чекає оновлення форми, вказує мультилотовість, заповнює  
199 - ... приховані поля + відкриває попап основних даних, заповнює його і закриває  
200 -  
201 - Execute Javascript $(window).scrollTop(0)  
202 - wait until page does not contain element ${tender_load_form_after_mode_locator}  
203 - wait until page contains element ${tender_form_procurement_method_type_input_locator}  
204 - capture page screenshot  
205 - ${procurement_method_type} = get from dictionary by keys ${data} procurementMethodType  
206 - capture page screenshot  
207 - run keyword if condition is not none ${procurement_method_type} select from list by value ${tender_form_procurement_method_type_input_locator} ${procurement_method_type}  
208 - wait until page does not contain element ${tender_load_form_after_mode_locator}  
209 -  
210 - ${lots} = get from dictionary by keys ${data} lots  
211 - run keyword if condition is not none ${lots} Run Keyword And Ignore Error Click Element ${tender_multilot_locator}  
212 - wait until page does not contain element ${tender_load_form_after_mode_locator} 20  
213 -  
214 - open popup by btn locator ${plan_form_general_panel_edit_btn_locator}  
215 - ${closeFrameworkAgreementSelectionUA_path} = Get Variable Value ${ARTIFACT_FILE} artifact.yaml  
216 - ${ARTIFACT2} = load_data_from ${closeFrameworkAgreementSelectionUA_path}  
217 - run keyword and ignore error run keyword if condition is not none ${ARTIFACT.tender_uaid} input text to visible input ${tender_form_general_agreementid_input_locator} ${ARTIFACT2.tender_uaid}  
218 - ${main_procurement_category} = get from dictionary by keys ${data} mainProcurementCategory  
219 - run keyword if condition is not none ${main_procurement_category} Execute Javascript $('[id$="form-main_procurement_category"]').val('${main_procurement_category}').change()  
220 - ${title} = get from dictionary by keys ${data} title  
221 - run keyword if condition is not none ${title} input text to visible input ${tender_form_general_tender_title_locator} ${title}  
222 - ${title_en} = get from dictionary by keys ${data} title_en  
223 - run keyword if condition is not none ${title} input text to exist visible input ${tender_form_general_tender_title_en_locator} ${title_en}  
224 - ${description} = get from dictionary by keys ${data} description  
225 - run keyword if condition is not none ${title} input text to visible input ${tender_form_general_tender_description_locator} ${description}  
226 - ${description_en} = get from dictionary by keys ${data} description_en  
227 - run keyword if condition is not none ${title} input text to exist visible input ${tender_form_general_tender_description_en_locator} ${description_en}  
228 - ${amount} = get from dictionary by keys ${data} value amount  
229 - run keyword and ignore error run keyword if condition is not none ${amount} run keyword and ignore error input number to exist visible input ${tender_form_general_value_amount_input_locator} ${amount}  
230 - ${currency} = get from dictionary by keys ${data} value currency  
231 - run keyword if condition is not none ${currency} select from visible list by value ${tender_form_general_value_currency_input_locator} ${currency}  
232 - ${value_added_tax_included} = get from dictionary by keys ${data} value valueAddedTaxIncluded  
233 - run keyword if condition is not none ${value_added_tax_included} run keyword if ${value_added_tax_included} Click Element ${tender_form_general_value_added_tax_input_locator}  
234 - ${min_step_amount} = get from dictionary by keys ${data} minimalStep amount  
235 - run keyword if condition is not none ${min_step_amount} input number to exist visible input ${tender_form_general_minimalStep_amount_input_locator} ${min_step_amount}  
236 - ${tender_enquiry_period_start_date} = get from dictionary by keys ${data} enquiryPeriod startDate  
237 -# run keyword if condition is not none ${tender_enquiry_period_start_date} select from visible list by year of date ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}  
238 - run keyword if condition is not none ${tender_enquiry_period_start_date} input datetime to visible input ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}  
239 - ${tender_enquiry_period_end_date} = get from dictionary by keys ${data} enquiryPeriod endDate  
240 -# run keyword if condition is not none ${tender_enquiry_period_start_date} select from visible list by year of date ${tender_enquiry_period_start_date_input_locator} ${tender_enquiry_period_start_date}  
241 - run keyword if condition is not none ${tender_enquiry_period_end_date} input datetime to visible input ${tender_enquiry_period_end_date_input_locator} ${tender_enquiry_period_end_date}  
242 - ${tender_start_date} = get from dictionary by keys ${data} tenderPeriod startDate  
243 - run keyword if condition is not none ${tender_start_date} run keyword and ignore error input datetime to visible input ${tender_tender_period_start_date_input_locator} ${tender_start_date}  
244 - ${tender_end_date} = get from dictionary by keys ${data} tenderPeriod endDate  
245 - run keyword if condition is not none ${tender_end_date} input datetime to visible input ${tender_tender_period_end_date_input_locator} ${tender_end_date}  
246 - ${date_start} = Get Current Date increment=03:00:00  
247 - run keyword if condition is none ${tender_end_date} input datetime to visible input ${tender_tender_period_end_date_input_locator} ${date_start}  
248 - run keyword and ignore error click element ${tender_tender_quick_mode_locator}  
249 - ${classification} = get from dictionary by keys ${data} classification  
250 - run keyword if condition is not none ${classification} select classification by code attributes ${plan_form_classification_edit_btn_locator} ${classification}  
251 - ${additional_classifications} = get from dictionary by keys ${data} additionalClassifications  
252 - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_additional_classification_edit_btn_locator} ${additional_classifications} ${None} ${kekv_schemes}  
253 - run keyword if condition is not none ${additional_classifications} select classification by array of code attributes ${plan_form_kekv_classification_edit_btn_locator} ${additional_classifications} ${kekv_schemes}  
254 - ${funding_kind} = get from dictionary by keys ${data} fundingKind  
255 - run keyword if condition is not none ${funding_kind} select from visible list by value ${tender_form_general_funding_kind_input_locator} ${funding_kind}  
256 -#closeframework  
257 - ${max_awards_count} = get from dictionary by keys ${data} maxAwardsCount  
258 - run keyword if condition is not none ${max_awards_count} input text to exist visible input ${tender_form_general_max_awards_count_input_locator} ${max_awards_count}  
259 - ${agreement_duration_years} = get from dictionary by keys ${data} agreementDuration  
260 - ${agreement_duration_years1}= Run keyword If '${agreement_duration_years}' != '${None}' split_agreementDuration ${agreement_duration_years} year  
261 - run keyword if condition is not none ${agreement_duration_years} select from visible list by value ${tender_form_general_agreement_duration_years_input_locator} ${agreement_duration_years1}  
262 - ${agreement_duration_months} = get from dictionary by keys ${data} agreementDuration  
263 - ${agreement_duration_months1}= Run keyword If '${agreement_duration_months}' != '${None}' split_agreementDuration ${agreement_duration_months} month  
264 - run keyword if condition is not none ${agreement_duration_months} select from visible list by value ${tender_form_general_agreement_duration_months_input_locator} ${agreement_duration_months1}  
265 - ${agreement_duration_days} = get from dictionary by keys ${data} agreementDuration  
266 - ${agreement_duration_days1}= Run keyword If '${agreement_duration_days}' != '${None}' split_agreementDuration ${agreement_duration_years} day  
267 - run keyword if condition is not none ${agreement_duration_days} select from visible list by value ${tender_form_general_agreement_duration_days_input_locator} ${agreement_duration_days1}  
268 -#closeFrameworkAgreementSelectionUA  
269 - ${max_awards_count} = get from dictionary by keys ${data} maxAwardsCount  
270 - run keyword if condition is not none ${max_awards_count} input text to exist visible input ${tender_form_general_max_awards_count_input_locator} ${max_awards_count}  
271 - ${agreement_duration_years} = get from dictionary by keys ${data} agreementDuration  
272 - ${agreement_duration_years1}= Run keyword If '${agreement_duration_years}' != '${None}' split_agreementDuration ${agreement_duration_years} year  
273 - run keyword if condition is not none ${agreement_duration_years} select from visible list by value ${tender_form_general_agreement_duration_years_input_locator} ${agreement_duration_years1}  
274 - ${agreement_duration_months} = get from dictionary by keys ${data} agreementDuration  
275 - ${agreement_duration_months1}= Run keyword If '${agreement_duration_months}' != '${None}' split_agreementDuration ${agreement_duration_months} month  
276 - run keyword if condition is not none ${agreement_duration_months} select from visible list by value ${tender_form_general_agreement_duration_months_input_locator} ${agreement_duration_months1}  
277 - ${agreement_duration_days} = get from dictionary by keys ${data} agreementDuration  
278 - ${agreement_duration_days1}= Run keyword If '${agreement_duration_days}' != '${None}' split_agreementDuration ${agreement_duration_years} day  
279 - run keyword if condition is not none ${agreement_duration_days} select from visible list by value ${tender_form_general_agreement_duration_days_input_locator} ${agreement_duration_days1}  
280 - submit current visible popup  
281 -  
282 -fill tender form items  
283 - [Arguments] ${item_attributes_array}  
284 - [Documentation] заповнення номенклатури тендеру  
285 -  
286 - :FOR ${item_attributes} IN @{item_attributes_array}  
287 - \ run keyword and ignore error open popup by btn locator ${tender_form_item_add_edit_btn_locator}  
288 -# \ wait until popup is visible  
289 - \ fill tender item form in opened popup ${item_attributes}  
290 - \ submit current visible popup  
291 - \ ${features} = get from dictionary by keys ${item_attributes} features  
292 - \ run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_item_panel_add_feature_btn_locator}  
293 -  
294 -fill tender form items 2 stage  
295 - [Arguments] ${item_attributes_array}  
296 - [Documentation] заповнення номенклатури тендеру  
297 -  
298 - :FOR ${item_attributes} IN @{item_attributes_array}  
299 - \ run keyword and ignore error open popup by btn locator ${tender_form_item_edit_btn_locator}  
300 -# \ wait until popup is visible  
301 - \ fill tender item form in opened popup ${item_attributes}  
302 - \ submit current visible popup  
303 - \ ${features} = get from dictionary by keys ${item_attributes} features  
304 - \ run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_item_panel_add_feature_btn_locator}  
305 -  
306 -fill tender item form in opened popup  
307 - [Arguments] ${data}  
308 - [Documentation] заповнює відкриту форму згідно вказаних даних  
309 -  
310 - fill item form in opened popup ${data}  
311 -  
312 - ${region} = get from dictionary by keys ${data} deliveryAddress region  
313 - run keyword if condition is not none ${region} select from visible list by label ${item_form_popup_delivery_region_id_input_locator} ${region}  
314 - ${postal_code} = get from dictionary by keys ${data} deliveryAddress postalCode  
315 - run keyword if condition is not none ${postal_code} input text to visible input ${item_form_popup_delivery_postal_code_input_locator} ${postal_code}  
316 - ${locality} = get from dictionary by keys ${data} deliveryAddress locality  
317 - run keyword if condition is not none ${locality} input text to visible input ${item_form_popup_delivery_locality_input_locator} ${locality}  
318 - ${street_address} = get from dictionary by keys ${data} deliveryAddress streetAddress  
319 - run keyword if condition is not none ${street_address} input text to visible input ${item_form_popup_delivery_street_address_input_locator} ${street_address}  
320 - ${delivery_start_date} = get from dictionary by keys ${data} deliveryDate startDate  
321 - ${delivery_start_date} = Run keyword If '${delivery_start_date}' != '${None}' parse_deliveryPeriod_date ${delivery_start_date}  
322 - run keyword if condition is not none ${delivery_start_date} run keyword and ignore error input datetime to exist visible input ${item_form_popup_delivery_start_date_input_locator} ${delivery_start_date}  
323 - ${delivery_end_date} = get from dictionary by keys ${data} deliveryDate endDate  
324 - ${delivery_end_date} = Run keyword If '${delivery_end_date}' != '${None}' parse_deliveryPeriod_date ${delivery_end_date}  
325 - run keyword if condition is not none ${delivery_end_date} run keyword and ignore error input text ${item_form_popup_delivery_end_date_input_locator} ${delivery_end_date}  
326 -## run keyword if condition is not none ${delivery_end_date} run keyword and ignore error input datetime to exist visible input ${item_form_popup_delivery_end_date_input_locator} ${delivery_end_date}  
327 -  
328 -fill tender form milestones  
329 - [Arguments] ${milestone_attributes_array}  
330 - [Documentation] заповнення умов оплати тендеру  
331 -  
332 - open popup by btn locator ${tender_form_milestones_panel_edit_btn_locator}  
333 -# click visible element ${tender_form_milestones_panel_edit_btn_locator}  
334 -# wait until popup is visible  
335 - :FOR ${milestone_attributes} IN @{milestone_attributes_array}  
336 - \ click visible element ${milestone_form_popup_add_btn_locator}  
337 - \ wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
338 - \ fill milestone form in opened popup ${milestone_attributes}  
339 - submit current visible popup  
340 -  
341 -fill tender form milestones fake  
342 - [Documentation] заповнення умов оплати тендеру  
343 -  
344 - open popup by btn locator ${tender_form_milestones_panel_edit_btn_locator}  
345 - click visible element ${milestone_form_popup_add_btn_locator}  
346 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
347 - select from visible list by value ${milestone_form_popup_title_input_locator} submissionDateOfApplications  
348 - input text to exist visible input ${milestone_form_popup_description_input_locator} submissionDateOfApplications  
349 - input text to exist visible input ${milestone_form_popup_percentage_input_locator} 100  
350 - select from visible list by value ${milestone_form_popup_code_input_locator} postpayment  
351 - input text to exist visible input ${milestone_form_popup_duration_days_input_locator} 145  
352 - select from visible list by value ${milestone_form_popup_duration_type_input_locator} working  
353 - submit current visible popup  
354 -  
355 -fill milestone form in opened popup  
356 - [Arguments] ${data}  
357 - [Documentation] заповнює відкриту форму в активній вкладці згідно вказаних даних  
358 -  
359 - ${title} = get from dictionary by keys ${data} title  
360 - run keyword if condition is not none ${title} select from visible list by value ${milestone_form_popup_title_input_locator} ${title}  
361 - ${description} = get from dictionary by keys ${data} description  
362 - run keyword if condition is not none ${description} input text to exist visible input ${milestone_form_popup_description_input_locator} ${description}  
363 - ${percentage} = get from dictionary by keys ${data} percentage  
364 - run keyword if condition is not none ${percentage} input text to exist visible input ${milestone_form_popup_percentage_input_locator} ${percentage}  
365 - ${code} = get from dictionary by keys ${data} code  
366 - run keyword if condition is not none ${code} select from visible list by value ${milestone_form_popup_code_input_locator} ${code}  
367 - ${duration_days} = get from dictionary by keys ${data} duration days  
368 - run keyword if condition is not none ${duration_days} input text to exist visible input ${milestone_form_popup_duration_days_input_locator} ${duration_days}  
369 - ${duration_type} = get from dictionary by keys ${data} duration type  
370 - run keyword if condition is not none ${duration_type} select from visible list by value ${milestone_form_popup_duration_type_input_locator} ${duration_type}  
371 -  
372 -fill tender form features  
373 - [Arguments] ${feature_attributes_array} ${add_btn_locator}  
374 - [Documentation] заповнення нецінові крітерії тендеру  
375 -  
376 - open popup by btn locator ${add_btn_locator}  
377 -# click visible element ${add_btn_locator}  
378 -# wait until popup is visible  
379 - :FOR ${feature_attributes} IN @{feature_attributes_array}  
380 -# \ click visible element ${tender_form_features_panel_edit_btn_locator}  
381 - \ execute javascript ${tender_form_features_panel_edit_btn_locator}  
382 - \ wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
383 - \ fill feature form in opened popup ${feature_attributes}  
384 - submit current visible popup  
385 -  
386 -fill tender form features2  
387 - [Arguments] ${feature_attributes_array} ${add_btn_locator}  
388 - [Documentation] заповнення нецінові крітерії тендеру  
389 -  
390 - open popup by btn locator ${add_btn_locator}  
391 -# click visible element ${add_btn_locator}  
392 -# wait until popup is visible  
393 - click visible element ${tender_form_features_panel_edit_btn_locator}  
394 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
395 - fill feature form in opened popup ${feature_attributes_array}  
396 - submit current visible popup  
397 -  
398 -fill feature form in opened popup  
399 - [Arguments] ${data}  
400 - [Documentation] заповнює відкриту форму в активній вкладці згідно вказаних даних  
401 -  
402 - ${title} = get from dictionary by keys ${data} title  
403 - run keyword if condition is not none ${title} input text to exist visible input ${feature_form_popup_title_input_locator} ${title}  
404 - ${description} = get from dictionary by keys ${data} description  
405 - run keyword if condition is not none ${description} input text to exist visible input ${feature_form_popup_description_input_locator} ${description}  
406 - ${title_en} = get from dictionary by keys ${data} title_en  
407 - run keyword if condition is not none ${title_en} input text to exist visible input ${feature_form_popup_title_en_input_locator} ${title_en}  
408 - ${description_en} = get from dictionary by keys ${data} description  
409 - run keyword if condition is not none ${description_en} input text to exist visible input ${feature_form_popup_description_en_input_locator} ${description_en}  
410 - ${options} = Get From Dictionary ${data} enum  
411 - ${count} = Get Length ${options}  
412 - ${ex}= Evaluate ${count} - 1  
413 - : FOR ${INDEX} IN RANGE 0 ${count}  
414 - \ run keyword if condition is not none ${options[${INDEX}].title} input text to exist visible input ${feature_form_popup_enum_title_input_locator} ${options[${INDEX}].title}  
415 - \ run keyword and ignore error input text to exist visible input ${feature_form_popup_enum_title_en_input_locator} test2  
416 -# \ run keyword if condition is not none ${options[${INDEX}].title_en} input text to exist visible input ${feature_form_popup_enum_title_en_input_locator} ${options[${INDEX}].title_en}  
417 - \ ${value} = convert_float_to_string ${options[${INDEX}].value}  
418 - \ ${value} = Convert To Number ${value}  
419 - \ ${value} = multiply_hundred ${value}  
420 - \ ${value} = convert_float_to_string ${value}  
421 - \ run keyword if condition is not none ${options[${INDEX}].value} input text to exist visible input ${feature_form_popup_enum_value_input_locator} ${value}  
422 - \ Continue For Loop If '${INDEX}' == '${ex}'  
423 - \ Run Keyword If ${count} != 1 click visible element ${feature_form_popup_add-enums_btn_locator}  
424 - \ wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
425 -  
426 -fill tender form lots  
427 - [Arguments] ${lot_attributes_array}  
428 - [Documentation] заповнення номенклатури тендеру  
429 -  
430 - ##### BOF - TMP for negotiation milestone 1 lot#####  
431 - ${prepared_tender_data} = Get From Dictionary ${td_railway_crutch} data  
432 - ${milestones1} = Run Keyword If "${mode}" in "negotiation" Get From Dictionary ${prepared_tender_data} milestones  
433 - ##### EOF - TMP #####  
434 - :FOR ${lot_attributes} IN @{lot_attributes_array}  
435 - \ run keyword if '${mode}' not in 'open_framework' open popup by btn locator ${tender_form_lots_panel_edit_btn_locator}  
436 - \ ... ELSE click visible element ${tender_form_lots_edit_lot1_btn_locator}  
437 -# \ open popup by btn locator ${tender_form_lots_panel_edit_btn_locator}  
438 -# \ click visible element ${tender_form_lots_panel_edit_btn_locator}  
439 -# \ wait until popup is visible  
440 - \ fill lot form in opened popup ${lot_attributes}  
441 - \ submit current visible popup  
442 - \ ${features} = get from dictionary by keys ${lot_attributes} features  
443 - \ run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_lot_panel_add_feature_btn_locator}  
444 - \ ${milestones} = get from dictionary by keys ${lot_attributes} milestones  
445 - \ run keyword if condition is not none ${milestones} fill tender form milestones ${milestones}  
446 - \ run keyword if condition is none ${milestones} run keyword if "${mode}" in "negotiation" fill tender form milestones ${milestones1}  
447 - \ ${items} = get from dictionary by keys ${lot_attributes} items  
448 - \ run keyword if condition is not none ${items} fill tender form items ${items}  
449 -  
450 -fill tender form lots 2 stage  
451 - [Arguments] ${lot_attributes_array}  
452 - [Documentation] заповнення номенклатури тендеру  
453 -  
454 - ##### BOF - TMP for negotiation milestone 1 lot#####  
455 - ${prepared_tender_data} = Get From Dictionary ${td_railway_crutch} data  
456 - ${milestones1} = Run Keyword If "${mode}" in "negotiation" Get From Dictionary ${prepared_tender_data} milestones  
457 - ##### EOF - TMP #####  
458 - :FOR ${lot_attributes} IN @{lot_attributes_array}  
459 - \ open popup by btn locator ${tender_form_lots_edit_lot1_btn_locator}  
460 - ##\ open popup by btn locator ${tender_form_lots_panel_edit_btn_locator}  
461 - \ fill lot form in opened popup ${lot_attributes}  
462 - \ submit current visible popup  
463 - \ ${features} = get from dictionary by keys ${lot_attributes} features  
464 - \ run keyword if condition is not none ${features} fill tender form features ${features} ${tender_form_lot_panel_add_feature_btn_locator}  
465 - \ ${milestones} = get from dictionary by keys ${lot_attributes} milestones  
466 - \ run keyword if condition is not none ${milestones} fill tender form milestones ${milestones}  
467 - \ run keyword if condition is none ${milestones} run keyword if "${mode}" in "negotiation" fill tender form milestones ${milestones1}  
468 - \ run keyword if condition is none ${milestones} run keyword if "${mode}" in "framework_selection" fill tender form milestones fake  
469 - \ ${items} = get from dictionary by keys ${lot_attributes} items  
470 - \ run keyword if condition is not none ${items} fill tender form items 2 stage ${items}  
471 -  
472 -fill lot form in opened popup  
473 - [Arguments] ${data}  
474 - [Documentation] заповнює відкриту форму згідно вказаних даних  
475 -  
476 - log many ${data}  
477 - ${title} = get from dictionary by keys ${data} title  
478 - run keyword if condition is not none ${title} input text to visible input ${lot_form_popup_title_input_locator} ${title}  
479 - ${title_en} = get from dictionary by keys ${data} title_en  
480 - run keyword if condition is not none ${title_en} input text to exist visible input ${lot_form_popup_title_en_input_locator} ${title_en}  
481 - ${description} = get from dictionary by keys ${data} description  
482 - run keyword if condition is not none ${description} input text to visible input ${lot_form_popup_description_input_locator} ${description}  
483 - ${description_en} = get from dictionary by keys ${data} description_en  
484 - run keyword if condition is not none ${description_en} input text to exist visible input ${lot_form_popup_description_en_input_locator} ${description_en}  
485 - capture page screenshot  
486 - ${description_ru} = get from dictionary by keys ${data} description_ru  
487 - run keyword if condition is not none ${description_ru} input text to exist visible input ${item_form_popup_description_ru_input_locator} ${description_ru}  
488 - ${amount} = get from dictionary by keys ${data} value amount  
489 - run keyword if condition is not none ${amount} input number to exist visible input ${lot_form_popup_value_amount_input_locator} ${amount}  
490 - ${min_step_amount} = get from dictionary by keys ${data} minimalStep amount  
491 - run keyword if condition is not none ${min_step_amount} input number to exist visible input ${lot_form_popup_minimalstep_amount_input_locator} ${min_step_amount}  
492 -  
493 - ${yearly_payments_percentage_range} = get from dictionary by keys ${data} yearlyPaymentsPercentageRange  
494 - ${yearly_payments_percentage_range} = Run keyword If '${yearly_payments_percentage_range}' != '${None}' set_value_minimalStepPercentage ${yearly_payments_percentage_range}  
495 - ${yearly_payments_percentage_range} = Run keyword If '${yearly_payments_percentage_range}' != '${None}' convert_esco__float_to_string ${yearly_payments_percentage_range}  
496 - run keyword if condition is not none ${yearly_payments_percentage_range} input number to exist visible input ${tender_form_general_yearly_payments_percentage_range_input_locator} ${yearly_payments_percentage_range}  
497 - ${minimal_step_percentage} = get from dictionary by keys ${data} minimalStepPercentage  
498 - ${minimal_step_percentage} = Run keyword If '${minimal_step_percentage}' != '${None}' set_value_minimalStepPercentage ${minimal_step_percentage}  
499 - ${minimal_step_percentage} = Run keyword If '${minimal_step_percentage}' != '${None}' convert_esco__float_to_string ${minimal_step_percentage}  
500 - run keyword if condition is not none ${minimal_step_percentage} input number to exist visible input ${tender_form_general_minimal_step_percentage_input_locator} ${minimal_step_percentage}  
501 -# ${currency} = get from dictionary by keys ${data} value currency  
502 -# run keyword if condition is not none ${currency} select from visible list by value ${tender_form_lots_value_currency_input_locator} ${currency}  
503 -# ${valueAddedTaxIncluded} = get from dictionary by keys ${data} value valueAddedTaxIncluded  
504 -# run keyword if condition is not none ${valueAddedTaxIncluded} run keyword if ${valueAddedTaxIncluded} Click Element ${tender_form_lots_value_added_tax_input_locator}  
505 -  
506 -fill tender form funders  
507 - [Arguments] ${funder_attributes_array}  
508 - [Documentation] заповнення донорів тендеру  
509 -  
510 - :FOR ${funder_attributes} IN @{funder_attributes_array}  
511 - \ ${name} = get from dictionary by keys ${funder_attributes} name  
512 - \ run keyword if condition is not none ${name} select from visible list by label ${tender_form_general_tender_funder_name_locator} ${name}  
513 -  
514 -fill tender required documents  
515 - [Documentation] додає документ до усієї закупівлі для успішної валідації форми  
516 -  
517 - ${file_path} ${file_name} ${file_content} = create_fake_doc  
518 - click visible element ${tender_form_general_panel_add_document_btn_locator}  
519 - choose file ${add_file_to_form_locator} ${file_path}  
520 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
521 - submit current visible popup  
522 -  
523 -fill tender from award reporting  
524 - [Arguments] ${budget} ${award_attributes_array}  
525 - [Documentation] заповнення переможця reporting тендеру  
526 -  
527 - capture page screenshot  
528 - run keyword and ignore error click visible element ${tender_form_general_panel_update_award_negotiation_btn_locator}  
529 - capture page screenshot  
530 -# Run Keyword If "${TEST_NAME}" == "Можливість створити переговорну процедуру" open popup by btn locator ${tender_form_general_panel_add_award_negotiation_btn_locator}  
531 - run keyword and ignore error Run Keyword If "${TEST_NAME}" == "Можливість створити переговорну процедуру" open popup by btn locator ${tender_form_general_panel_add_award_negotiation_btn_locator}  
532 - ... ELSE IF "${TEST_NAME}" == "Можливість створити звіт про укладений договір" open popup by btn locator ${tender_form_general_panel_update_award_reporting_btn_locator}  
533 - capture page screenshot  
534 - Run Keyword If "${TEST_NAME}" == "Можливість зареєструвати і підтвердити постачальника до звіту про укладений договір" open popup by btn locator ${tender_form_general_panel_update_award_reporting_btn_locator}  
535 - capture page screenshot  
536 -# Run Keyword If "${TEST_NAME}" == "Можливість зареєструвати і підтвердити постачальника до переговорної процедури" open popup by btn locator ${tender_form_general_panel_update_award_negotiation_btn_locator}  
537 - capture page screenshot  
538 - fill award reporting form in opened popup ${budget} ${award_attributes_array}  
539 - submit current visible popup  
540 -  
541 -fill award reporting form in opened popup  
542 - [Arguments] ${budget} ${data}  
543 - [Documentation] заповнює відкриту форму в активній вкладці згідно вказаних даних  
544 -  
545 - ${org_name} = get from dictionary by keys ${data} identifier legalName  
546 - run keyword if condition is not none ${org_name} input text to exist visible input ${tender_form_award_organization_name_locator} ${org_name}  
547 - ${organization_identifier_code} = get from dictionary by keys ${data} identifier id  
548 - run keyword if condition is not none ${organization_identifier_code} input text to exist visible input ${tender_form_award_organization_identifier_code_locator} ${organization_identifier_code}  
549 - ${award_organization_scale} = get from dictionary by keys ${data} scale  
550 - run keyword if condition is not none ${award_organization_scale} select from visible list by value ${tender_form_award_organization_scale_locator} ${award_organization_scale}  
551 - ${region} = get from dictionary by keys ${data} address region  
552 - run keyword if condition is not none ${region} select from visible list by label ${tender_form_award_organization_region_id_locator} ${region}  
553 - ${postal_code} = get from dictionary by keys ${data} address postalCode  
554 - run keyword if condition is not none ${postal_code} input text to exist visible input ${tender_form_award_organization_postal_code_locator} ${postal_code}  
555 - ${locality} = get from dictionary by keys ${data} address locality  
556 - run keyword if condition is not none ${locality} input text to exist visible input ${tender_form_award_organization_locality_locator} ${locality}  
557 - ${street_address} = get from dictionary by keys ${data} address streetAddress  
558 - run keyword if condition is not none ${street_address} input text to exist visible input ${tender_form_award_organization_street_address_locator} ${street_address}  
559 - ${contact_point_name} = get from dictionary by keys ${data} contactPoint name  
560 - run keyword if condition is not none ${contact_point_name} input text to exist visible input ${tender_form_award_organization_contact_point_name_locator} ${contact_point_name}  
561 - ${contact_point_email} = get from dictionary by keys ${data} contactPoint email  
562 - run keyword if condition is not none ${contact_point_email} input text to exist visible input ${tender_form_award_organization_contact_point_email_locator} ${contact_point_email}  
563 - ${contact_point_phone} = get from dictionary by keys ${data} contactPoint telephone  
564 - run keyword if condition is not none ${contact_point_phone} input text to exist visible input ${tender_form_award_organization_contact_point_phone_locator} ${contact_point_phone}  
565 -# ${duration_days} = get from dictionary by keys ${data} contactPoint days  
566 -# run keyword if condition is not none ${duration_days} input text to exist visible input ${milestone_form_popup_duration_days_input_locator} ${duration_days}  
567 - input number to exist visible input ${tender_form_award_budget_locator} ${budget}  
568 -  
569 -open tender search form  
570 - [Documentation] відкриває сторінку з пошуком тендерів  
571 -  
572 - open page and wait element by locator ${broker_baseurl}/tenders ${tender_search_form_locator}  
573 -  
574 -save tender form and wait synchronization  
575 - [Documentation] натискає кнопку "Зберегти" і чекає синхронізації тендеру  
576 -  
577 - submit form and check result ${tender_form_submit_btn_locator} ${tender_form_submit_success_msg} ${tender_created_checker_element_locator} ${true}  
578 - wait until page does not contain element with reloading ${tender_sync_element_locator}  
579 -  
580 -add document in tender  
581 - [Arguments] ${filepath}  
582 - [Documentation] Завантажити документ, який знаходиться по шляху filepath.  
583 -  
584 - click visible element ${tender_form_general_panel_edit_add_document_btn_locator}  
585 - choose file ${add_file_to_form_locator} ${filepath}  
586 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
587 - submit current visible popup  
588 -  
589 -add document in lot  
590 - [Arguments] ${filepath} ${lot_id}  
591 - [Documentation] Завантажити в лот (з ідентіфікатором ${lot_id}) документ, який знаходиться по шляху filepath.  
592 -  
593 - ${open_form_add_doc_lot_btn_locator} = replace string ${tender_form_lot_panel_add_document_btn_locator_tpl} %lot_id% ${lot_id}  
594 - click visible element and wait until page contains element ${open_form_add_doc_lot_btn_locator} jquery=.modal.modal-form.js-form-popup.fancybox-content  
595 - choose file ${add_file_to_form_locator} ${filepath}  
596 - wait until page does not contain element ${popup_dynamic_form_loading_element_locator}  
597 - submit current visible popup  
598 -  
599 -confirm-stage2  
600 - [Documentation] Перевести тендер tender_uaid в статус active.stage2.waiting.  
601 -  
602 - Wait Until Keyword Succeeds 300 s 20 s Wait For stage2button  
603 - click visible element ${tender_stage2_open_btn_locator}  
604 - Wait Until Page Contains ${tender_stage2_submit_success_msg} 60  
605 -# click visible element ${tender_stage2_submit_success_btn_locator}  
606 -# submit form and check result ${tender_stage2_submit_success_btn_locator} ${tender_stage2_submit_alert_success_msg} ${tender_created_checker_element_locator}  
607 - execute javascript ${tender_stage2_submit_js_success_btn_locator}  
608 - Wait Until Page Contains ${tender_stage2_submit_alert_success_msg} 60  
609 - wait until alert is visible ${tender_stage2_submit_alert_success_msg}  
610 - run keyword and ignore error close current visible alert  
611 -  
612 -  
613 -activate stage 2  
614 - [Documentation] Перевести тендер tender_uaid в статус active.tendering.  
615 -  
616 - open popup by btn locator ${tender_form_general_panel_edit_btn_locator}  
617 - ${tender_end_date} = Get Current Date increment=00:35:00  
618 - input datetime to visible input ${tender_tender_period_end_date_input_locator} ${tender_end_date}  
619 - capture page screenshot  
620 - click visible element ${tender_form_general_panel_draft_mode_input_locator}  
621 - capture page screenshot  
622 - submit current visible popup  
623 - capture page screenshot  
624 - ${file_path} ${file_name} ${file_content} = create_fake_doc  
625 - click visible element ${tender_form_general_panel_document_stage2_input_locator}  
626 - choose file ${add_file_to_form_locator} ${file_path}  
627 - wait until element is visible ${stage2_form_add_document_type_input_locator}  
628 - click visible element ${stage2_form_add_document_description_btn_locator}  
629 - capture page screenshot  
630 - wait until element is visible ${stage2_form_add_document_description_input_locator}  
631 - input text to exist visible input ${stage2_form_add_document_description_input_locator} test2  
632 - click visible element ${stage2_form_add_document_close_description_btn_locator}  
633 - capture page screenshot  
634 - submit current visible popup  
635 - capture page screenshot  
636 -  
637 -fix awards data in global Users variable  
638 - [Arguments] ${username}  
639 - [Documentation] Фікс для помилки "Resolving variable '${award.value.amount}' failed: AttributeError: value"  
640 -  
641 - :FOR ${user} IN @{USERS}  
642 - \ continue for loop if '${user}' == '${username}'  
643 - \ ${is_user_has_data} = run keyword and return status dictionary should contain key ${USERS.users} ${user}  
644 - \ continue for loop if ${is_user_has_data} == ${False}  
645 - \ ${user_data} = set variable ${USERS.users['${user}']}  
646 - \ ${is_user_has_tender_data} = run keyword and return status dictionary should contain key ${user_data} tender_data  
647 - \ continue for loop if ${is_user_has_tender_data} == ${False}  
648 - \ ${status} ${award_data} = run keyword and ignore error get_from_object ${USERS.users['${user}'].tender_data.data} awards  
649 - \ continue for loop if '${status}' != 'PASS'  
650 - \ set to object ${USERS.users['${username}'].tender_data.data} awards ${award_data}  
651 - \ exit for loop  
652 -  
653 -fill tender contact person  
654 - [Arguments] ${data}  
655 - [Documentation] заповнює відкриту форму згідно вказаних даних  
656 - run keyword and ignore error open popup by btn locator ${tender_form_cp_edit_btn_locator}  
657 - ${organization_name_en} = get from dictionary by keys ${data} procuringEntity name_en  
658 - run keyword if condition is not none ${organization_name_en} input text to visible input ${tender_form_organization_name_en_input_locator} ${organization_name_en}  
659 - ${contact_point_name_en} = get from dictionary by keys ${data} procuringEntity contactPoint name_en  
660 - run keyword if condition is not none ${contact_point_name_en} input text to visible input ${tender_form_contact_point_name_en_input_locator} ${contact_point_name_en}  
661 - submit current visible popup  
1 -*** Variables ***  
2 -  
3 -${kekv_schemes} = ["KEKV", "КЕКВ"]  
4 -${site_allowed_schemes} = ["ДК021", "ДК015", "ДК018", "ДК003", "specialNorms", "INN", "ATC"]  
5 -${page_content_locator} = jquery=.page__content  
6 -  
7 -# alerts  
8 -${alert_opened_locator} = jquery=.jconfirm:last .content  
9 -${alert_confirm_btn_locator} = jquery=.jconfirm:last .buttons .js-btn-confirm  
10 -${alert_opened_close_btn_locator} = jquery=.jconfirm:last .closeIcon  
11 -${alert_message_contains_text_locator_tpl} = jquery=.jconfirm:last .message:contains(%text%)  
12 -  
13 -# popups  
14 -${popup_opened_last_locator} = jquery=.fancybox-is-open:last  
15 -${popup_opened_last_submit_btn_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .modal-footer:last .js-submit,.fancybox-is-open:last .fancybox-slide--current .modal-footer:last .js-popup-submit  
16 -${popup_opened_content_locator} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content # for checking if it's visible  
17 -  
18 -# error pages  
19 -${error_page_404_checker_element_locator} = jquery=.site-error[data-error-code="404"]  
20 -  
21 -# language  
22 -${language_selector_active_element_locator} = jquery=.languages.page-header__languages .languages__btn  
23 -${language_selector_active_element_code_attribute_name} = data-language-code  
24 -${language_selector_open_element_locator} = jquery=.languages.page-header__languages .js-popup-open-initiator  
25 -${language_selector_active_element_by_code_locator_tpl} = jquery=.languages.page-header__languages .languages__btn[data-language-code='%code%']  
26 -${language_selector_list_element_locator_tpl} = jquery=.languages.page-header__languages .popup.languages__menu .languages__link[data-language-code='%code%']  
27 -  
28 -# classification popup  
29 -${classification_popup_opened_content_locator} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content.classification-modal # for checking if it's visible  
30 -${classification_popup_scheme_tab_locator_tpl} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content.classification-modal .nav a[data-toggle="tab"][data-scheme="%scheme%"]  
31 -${classification_popup_search_input_locator} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content.classification-modal .js-search-wrapper:visible .js-input  
32 -${classification_popup_serach_item_locator_tpl} = jquery=.fancybox-is-open .fancybox-slide--current .fancybox-content.classification-modal .js-search-wrapper:visible .js-search-tree strong:contains(%code%)  
33 -  
34 -# authorization  
35 -${login_popup_open_locator} = jquery=.page__header a[data-action="login"]  
36 -${login_popup_login_input_locator} = id=loginform-identity  
37 -#${login_popup_login_input_locator} = id=loginform-email  
38 -${login_popup_password_input_locator} = id=loginform-password  
39 -${login_popup_submit_btn_locator} = jquery=#login-form .js-submit-btn  
40 -${user_logged_checker_element_locator} = id=notifications-button # елемент для перевірки чи авторизований користувач  
41 -  
42 -# item form  
43 -${item_form_popup_description_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-description']  
44 -${item_form_popup_description_ru_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-description_ru']  
45 -${item_form_popup_description_en_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-description_en']  
46 -${item_form_popup_quantity_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-quantity']  
47 -${item_form_popup_unit_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-unit_id']  
48 -${item_form_popup_classification_edit_btn_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content .js-classification-input-wrapper [data-toggle="classification"]  
49 -${item_form_popup_additional_classification_edit_btn_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content .js-additional-classification-input-wrapper [data-toggle="additional-classification"]  
50 -${item_form_popup_delivery_region_id_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_region_id']  
51 -${item_form_popup_delivery_postal_code_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_postal_code']  
52 -${item_form_popup_delivery_locality_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_locality']  
53 -${item_form_popup_delivery_street_address_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_street_address']  
54 -${item_form_popup_delivery_start_date_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_start_date']  
55 -${item_form_popup_delivery_end_date_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-delivery_end_date']  
56 -  
57 -# buyer form  
58 -${buyer_form_popup_legal_name_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-procuring_entity_name']  
59 -${buyer_form_popup_identifier_id_input_locator} = jquery=.fancybox-is-open:last .fancybox-slide--current .fancybox-content [id$='-procuring_entity_identifier_code']  
60 -  
61 -# tender form  
62 -${tender_load_form_after_mode_locator} = jquery=#tender-form-pjax.loading-wrapper  
63 -#${tender_form_submit_success_msg} = дочекайтеся опублікування на сайті уповноваженого органу  
64 -${tender_form_submit_success_msg} = опублікування на сайті уповноваженого органу  
65 -${tender_form_submit_reporting_success_msg} = Закупівля успішно створена, дочекайтесь закінчення синхронізації, після чого потрібно накласти ЕЦП/КЕП  
66 -${tender_form_locator} = id=tender-form  
67 -${tender_form_procurement_method_type_input_locator} = jquery=.form-inline [id$="form-procurement_method_type"]  
68 -${tender_multilot_locator} = jquery=[id$="form-is_multilot"]  
69 -${tender_form_general_panel_edit_btn_locator} = jquery=#General #headingGeneral .actions-wrapper .js-form-popup-update  
70 -${tender_form_general_tender_plan_id_locator} = jquery=[id$="form-plan_id"]  
71 -${tender_form_general_tender_title_locator} = jquery=[id$="form-title"]  
72 -${tender_form_general_tender_title_en_locator} = jquery=[id$="form-title_en"]  
73 -${tender_form_general_tender_description_locator} = jquery=[id$="form-description"]  
74 -${tender_form_general_tender_description_en_locator} = jquery=[id$="form-description_en"]  
75 -${tender_form_general_tender_funder_locator} = jquery=[id$="form-is_donor"]  
76 -${tender_form_general_tender_funder_name_locator} = jquery=[id$="-funder_organization_id"]  
77 -${tender_form_general_value_amount_input_locator} = jquery=[id$="form-value_amount-disp"]  
78 -${tender_form_general_value_currency_input_locator} = jquery=[id$="form-value_currency"]  
79 -${tender_form_general_value_added_tax_input_locator} = jquery=[id$="form-value_added_tax_included"]  
80 -#${tender_form_general_minimalStep_amount_input_locator} = jquery=[id$="form-min_step_amount"]  
81 -${tender_form_general_minimalStep_amount_input_locator} = jquery=[id$="form-min_step_amount-disp"]  
82 -${tender_form_general_main_procurement_category_input_locator} = jquery=[id$="form-main_procurement_category"]  
83 -${tender_enquiry_period_start_date_input_locator} = jquery=[id$="form-enquiry_period_start_date"]  
84 -${tender_enquiry_period_end_date_input_locator} = jquery=[id$="form-enquiry_period_end_date"]  
85 -${tender_tender_period_start_date_input_locator} = jquery=[id$="form-tender_period_start_date"]  
86 -${tender_tender_period_end_date_input_locator} = jquery=[id$="form-tender_period_end_date"]  
87 -${tender_tender_quick_mode_locator} = jquery=[id$="form-quick_mode"]  
88 -${tender_cpv_form_submit_success_msg} = Вид предмету закупівлі не відповідає вказаному коду CPV  
89 -${tender_cpv_submit_btn_locator} = jquery=.animated-content .js-btn-confirm  
90 -${tender_cpv_js_submit_btn_locator} = $('.animated-content .js-btn-confirm').click()  
91 -  
92 -#esco  
93 -${tender_form_general_funding_kind_input_locator} = id=tenderescoform-funding_kind  
94 -${tender_form_general_nbu_discount_rate_input_locator} = id=tenderescoform-nbu_discount_rate  
95 -${tender_form_general_minimal_step_percentage_input_locator} = jquery=[id$="-min_step_percentage"]  
96 -${tender_form_general_yearly_payments_percentage_range_input_locator} = jquery=[id$="-yearly_payments_percentage_range"]  
97 -#closeframework  
98 -${tender_form_general_max_awards_count_input_locator} = jquery=[id$="form-max_awards_count"]  
99 -${tender_form_general_agreement_duration_years_input_locator} = jquery=[id$="form-agreement_duration_years"]  
100 -${tender_form_general_agreement_duration_months_input_locator} = jquery=[id$="form-agreement_duration_months"]  
101 -${tender_form_general_agreement_duration_days_input_locator} = jquery=[id$="form-agreement_duration_days"]  
102 -#closeFrameworkAgreementSelectionUA  
103 -${tender_form_general_agreementid_input_locator} = jquery=[id$="form-agreement_id"]  
104 -${tender_form_item_edit_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last > .panel-collapse.collapse.in .panel-heading .js-form-popup-update:first  
105 -#${tender_form_general_max_awards_count_input_locator} = jquery=[id$="form-max_awards_count"]  
106 -#${tender_form_general_agreement_duration_years_input_locator} = jquery=[id$="form-agreement_duration_years"]  
107 -#${tender_form_general_agreement_duration_months_input_locator} = jquery=[id$="form-agreement_duration_months"]  
108 -#${tender_form_general_agreement_duration_days_input_locator} = jquery=[id$="form-agreement_duration_days"]  
109 -#negotiation  
110 -${tender_form_general_cause_input_locator} = jquery=[id$="form-cause"]  
111 -${tender_form_general_cause_description_input_locator} = jquery=[id$="form-cause_description"]  
112 -${tender_form_cp_edit_btn_locator} = jquery=[id="headingContactPoint"] a[data-url="#contactpoint-form-popup"]  
113 -${tender_form_organization_name_en_input_locator} = jquery=[id*="organization_name_en"]  
114 -${tender_form_contact_point_name_en_input_locator} = jquery=[id*="contact_point_name_en"]  
115 -  
116 -#Tests Files.Complaints  
117 -${tender_form_auction_skip_mode_input_locator} = jquery=input[id$="form-auction_skip_mode"]  
118 -  
119 -${tender_form_general_panel_add_feature_btn_locator} = jquery=#collapseGeneral .btn[data-attribute="features"]  
120 -${tender_form_features_panel_edit_btn_locator} = $('.fancybox-content [href$="#add-features"]').trigger("click")  
121 -#${tender_form_features_panel_edit_btn_locator} = jquery=.fancybox-content [href$="#add-features"]  
122 -${feature_form_popup_title_input_locator} = jquery=.fancybox-is-open .tab-content:first > .tab-pane.active:first [id$="-title"]:first  
123 -${feature_form_popup_description_input_locator} = jquery=.fancybox-is-open .tab-content:first > .tab-pane.active:first [id$="-description"]:first  
124 -${feature_form_popup_title_en_input_locator} = jquery=.fancybox-is-open .tab-content:first > .tab-pane.active:first [id$="-title_en"]:first  
125 -${feature_form_popup_description_en_input_locator} = jquery=.fancybox-is-open .tab-content:first > .tab-pane.active:first [id$="-description_en"]:first  
126 -${feature_form_popup_value_input_locator} = jquery=[id$="-value"]  
127 -${feature_form_popup_add-enums_btn_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .btn-add a[href$="#add-enums"]:last  
128 -${feature_form_popup_enum_title_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:last > .tab-pane.active input[id$="-title"]  
129 -${feature_form_popup_enum_title_en_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:last > .tab-pane.active input[id$="-title_en"]  
130 -${feature_form_popup_enum_value_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:last > .tab-pane.active input[id$="-value"]  
131 -#${feature_form_popup_enum_title_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:first > .tab-pane.active input[id$="-title"]  
132 -#${feature_form_popup_enum_title_en_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:first > .tab-pane.active input[id$="-title_en"]  
133 -#${feature_form_popup_enum_value_input_locator} = jquery=.fancybox-is-open .enums-dynamic-forms-wrapper .tab-content:first > .tab-pane.active input[id$="-value"]  
134 -  
135 -${tender_form_general_panel_add_document_btn_locator} = jquery=#collapseGeneral .btn[data-attribute="documents"]  
136 -${tender_form_general_panel_edit_add_document_btn_locator} = jquery=div[data-form="general-form-popup"] .js-form-hidden-popup-panel:last a.btn-update  
137 -  
138 -#${tender_form_item_add_edit_btn_locator} = jquery=.js-form-group-popup-panel .panel-heading .actions-wrapper .js-form-popup-add  
139 -#последняя кнопка “Додати” для номенклатуры (для лотовой и безлотовой и репортинг)  
140 -${tender_form_item_add_edit_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last > .panel-heading .js-form-popup-add  
141 -${tender_form_item_panel_add_feature_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last .js-form-popup-panel-list:first > .js-form-popup-panel-item:last .actions-wrapper .btn[data-attribute="features"]  
142 -${tender_form_item_add_feature_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last .js-form-popup-panel-list:first > .js-form-popup-panel-item:last .js-form-popup-panel[data-attribute="features"] .actions-wrapper .btn.js-form-popup-update  
143 -${tender_form_item_edit_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last > .panel-heading .js-form-popup-add  
144 -  
145 -#${tender_form_milestones_panel_edit_btn_locator} = jquery=[data-url$="#milestones-form-popup"]  
146 -${tender_form_milestones_panel_edit_btn_locator} = jquery=.form-popup-panel[data-attribute="milestones"]:last > .panel-heading .js-form-popup-update  
147 -${milestone_form_popup_add_btn_locator} = jquery=.fancybox-is-open [href$="#add-milestones"]  
148 -${milestone_form_popup_title_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-title"]  
149 -${milestone_form_popup_description_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-description"]  
150 -${milestone_form_popup_percentage_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-percentage"]  
151 -${milestone_form_popup_code_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-code"]  
152 -${milestone_form_popup_duration_days_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-duration_days"]  
153 -${milestone_form_popup_duration_type_input_locator} = jquery=.fancybox-is-open:last .tab-content:first > .tab-pane.active:first [id$="-duration_type"]  
154 -  
155 -${tender_form_lots_panel_edit_btn_locator} = jquery=a.btn.btn-default.btn-update.js-form-popup-add  
156 -${lot_form_popup_add_btn_locator} = jquery=[href$="#add-milestones"]  
157 -${lot_form_popup_title_input_locator} = jquery=.fancybox-is-open [id$="-title"]  
158 -${lot_form_popup_description_input_locator} = jquery=.fancybox-is-open [id$="-description"]  
159 -${lot_form_popup_title_en_input_locator} = jquery=.fancybox-is-open [id$="-title_en"]  
160 -${lot_form_popup_description_en_input_locator} = jquery=.fancybox-is-open [id$="-description_en"]  
161 -${lot_form_popup_value_amount_input_locator} = jquery=.fancybox-is-open [id$="-value_amount-disp"]  
162 -##${lot_form_popup_value_amount_input_locator} = jquery=.fancybox-is-open [id$="-value_amount"]  
163 -${lot_form_popup_value_currency_input_locator} = jquery=.fancybox-is-open [id$="-value_currency"]  
164 -${lot_form_popup_value_added_tax_input_locator} = jquery=.fancybox-is-open [id$="-value_added_tax_included"]  
165 -${lot_form_popup_minimalstep_amount_input_locator} = jquery=.fancybox-is-open [id$="-min_step_amount-disp"]  
166 -##${lot_form_popup_minimalstep_amount_input_locator} = jquery=.fancybox-is-open [id$="-min_step_amount"]  
167 -${lot_form_popup_min_step_percentage_amount_input_locator} = jquery=.fancybox-is-open [id$="-min_step_percentage"]  
168 -  
169 -${tender_form_lot_panel_add_feature_btn_locator} = jquery=#Lots .js-form-popup-panel-list:first > .js-form-popup-panel-item:last .actions-wrapper .btn[data-attribute="features"]  
170 -${tender_form_lot_panel_update_feature_btn_locator} = jquery=#Lots #collapseLots0 .js-form-popup-panel-list:first .js-form-hidden-popup-panel:nth(0) a.js-form-popup-update  
171 -${tender_form_lot_panel_add_document_btn_locator_tpl} = jquery=#Lots #collapseLots div[data-title*="%lot_id%"] .actions-wrapper a.js-btn-add-form-popup-panel:last  
172 -${tender_form_lot_panel_edit_add_document_btn_locator} = jquery=#Lots #collapseLots div[data-title*="%lot_id%"] .js-form-hidden-popup-panel:last .actions-wrapper a.js-form-popup-update  
173 -  
174 -  
175 -${tender_form_procuringEntity_contactPoint_edit_btn_locator} = jquery=(#tender-form .panel.panel-default.form-popup-panel.js-form-popup-panel .panel-heading .actions-wrapper .js-form-popup-update)[4]  
176 -${tender_form_submit_btn_locator} = jquery=#tender-form .js-submit-btn  
177 -${tender_created_checker_element_locator} = id=tender-part-pjax  
178 -  
179 -# tender view  
180 -${tender_view_checker_element_locator} = id=tender-general-info  
181 -${tender_sync_element_locator} = jquery=#aside-part-pjax .status-label .fa-refresh  
182 -${tender_uaid_text_locator} = jquery=#tender-general-info .tender-id .value  
183 -${tender_edit_btn_locator} = jquery=#aside-part-pjax a[href*="tender/update"]  
184 -${tender_status_value_locator} = jquery=#aside-part-pjax .hidden.opstatus  
185 -#елемент проверки загрузки формы в попапе  
186 -${popup_dynamic_form_loading_element_locator} = jquery=.fancybox-is-open .btn-add .fa-spin  
187 -#${add_file_to_form} xpath=//input[@type='file']  
188 -${add_file_to_form_locator} = jquery=.fancybox-is-open input[type$="file"]  
189 -  
190 -# tender index + search  
191 -${tender_search_form_locator} = id=tender-filter-form  
192 -${tender_search_form_query_input_locator} = jquery=#tender-filter-form .dynamic-search-query input  
193 -${tender_search_form_result_locator_tpl} = jquery=#tender-list .lots__item .lot__characteristic li:contains(%query%)  
194 -  
195 -# -- for viewer --  
196 -${tender_title_value_locator} = jquery=#tender-part-pjax > section > div > h1  
197 -${tender_description_value_locator} = jquery=#tender-part-pjax > section > p  
198 -${tender_mainProcurementCategory_value_locator} = jquery=#tender-part-pjax .main-procurement-category-source.hidden  
199 -${tender_budget_amount_value_locator} = jquery=#tender-general-info .budget-amount.hidden  
200 -${tender_budget_amount_value_type} = float  
201 -${tender_tenderID_value_locator} = jquery=#tender-general-info .info-row.tender-id span.value  
202 -${tender_milestones_0_code_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .code  
203 -${tender_milestones_0_title_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .title  
204 -${tender_milestones_0_percentage_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .percentage  
205 -${tender_milestones_0_percentage_value_type} = float  
206 -${tender_milestones_0_duration_days_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .duration_days  
207 -${tender_milestones_0_duration_days_value_type} = integer  
208 -${tender_milestones_0_duration_type_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:first .duration_type  
209 -${tender_milestones_1_code_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .code  
210 -${tender_milestones_1_title_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .title  
211 -${tender_milestones_1_percentage_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .percentage  
212 -${tender_milestones_1_percentage_value_type} = float  
213 -${tender_milestones_1_duration_days_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .duration_days  
214 -${tender_milestones_1_duration_days_value_type} = integer  
215 -${tender_milestones_1_duration_type_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:nth(1) .duration_type  
216 -${tender_milestones_2_code_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .code  
217 -${tender_milestones_2_title_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .title  
218 -${tender_milestones_2_percentage_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .percentage  
219 -${tender_milestones_2_percentage_value_type} = float  
220 -${tender_milestones_2_duration_days_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .duration_days  
221 -${tender_milestones_2_duration_days_value_type} = integer  
222 -${tender_milestones_2_duration_type_value_locator} = jquery=#tender-part-pjax .milestone-list-wrapper .milestone-info-wrapper.hidden.info-wrapper:last .duration_type  
223 -${tender_value_amount_value_locator} = jquery=#tender-general-info .budget-amount.hidden  
224 -${tender_value_amount_value_type} = float  
225 -${tender_value_currency_value_locator} = jquery=#tender-general-info .budget-currency.hidden  
226 -${tender_value_valueAddedTaxIncluded_value_locator} = jquery=#tender-general-info .budget-tax-included.hidden  
227 -${tender_minimalStep_amount_value_locator} = jquery=#tender-general-info .minimal-step-source.hidden  
228 -${tender_minimalStep_amount_value_type} = float  
229 -${tender_minimalStepPercentage_value_locator} = jquery=#tender-general-info .minimal-step-percentage-source.hidden  
230 -${tender_fundingKind_value_locator} = jquery=#tender-general-info .funding-kind-source.hidden  
231 -${tender_yearlyPaymentsPercentageRange_value_locator} = jquery=#tender-general-info .yearly-payments-percentage-range-source.hidden  
232 -${tender_procuringEntity_name_value_locator} = jquery=#tender-part-pjax .info-row.organization span.value > span  
233 -${tender_enquiryPeriod_startDate_value_locator} = jquery=#tender-part-pjax .info-row.enquiry-period-start-date.hidden  
234 -${tender_enquiryPeriod_endDate_value_locator} = jquery=#tender-part-pjax .info-row.enquiry-period-end-date.hidden  
235 -${tender_tenderPeriod_startDate_value_locator} = jquery=#tender-part-pjax .info-row.tender-period-start-date.hidden  
236 -${tender_tenderPeriod_endDate_value_locator} = jquery=#tender-part-pjax .info-row.tender-period-end-date.hidden  
237 -${tender_qualificationPeriod_endDate_value_locator} = jquery=#tender-general-info .prequalification-period .value .end-date  
238 -#negotiation  
239 -${tender_cause_value_locator} = jquery=#tender-general-info .cause-source.hidden  
240 -${tender_causeDescription_value_locator} = jquery=#tender-general-info .cause-description .value  
241 -  
242 -${tender_items_0_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .description  
243 -#${tender_items_0_description_value_locator} = jquery=#tender-part-pjax .tabs__pane--visible .pseudo-table .item-item-wrapper .textvalue.hidden  
244 -#${tender_items_0_description_value_locator} = jquery=execute javascript return $('#tender-part-pjax .tabs__pane--visible .pseudo-table .item-item-wrapper').attr("data-title")  
245 -  
246 -#lots  
247 -${tender_lot_switch_tabs_lot_btn_locator_tpl} jquery=#lots .tabs__list .tabs__item span.tabs__tab-big-text:contains("%lot_id%")  
248 -${tender_lot_1_tabs_item_btn_locator} jquery=#lots .tabs__item:first > a  
249 -${tender_lot_title_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue:first  
250 -${tender_lot_description_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue:last  
251 -#${tender_lot_description_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible #text-modal-description div.textvalue  
252 -${tender_lot_value_amount_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
253 -${tender_lot_value_amount_value_type} = float  
254 -${tender_lot_value_currency_value_locator} = jquery=#tender-general-info .budget-currency.hidden  
255 -${tender_lot_value_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget .value  
256 -${tender_lot_minimal_step_currency_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .minimal-step .value  
257 -${tender_lot_minimal_step_amount_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .minimal-step-source.hidden  
258 -${tender_lot_minimal_step_amount_value_type} = float  
259 -${tender_lot_minimal_step_amount_currency_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
260 -${tender_lot_minimal_step_amount_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
261 -${tender_lot_minimal_step_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .minimal-step .value  
262 -  
263 -##### BOF - TMP #####  
264 -${tender_lot_0_title_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue.hidden  
265 -${tender_lot_0_value_amount_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
266 -${tender_lot_0_value_amount_value_type} = float  
267 -${tender_lot_0_lots_0_description_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue.hidden  
268 -${tender_lot_0_value_currency_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
269 -${tender_lot_0_value_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
270 -${tender_lot_0_minimal_step_amount_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
271 -${tender_lot_0_minimal_step_amount_value_type} = float  
272 -${tender_lot_0_lot_0_minimal_step_amount_currency_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
273 -${tender_lot_0_lot_0_minimal_step_amount_value_added_tax_included_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
274 -${tender_form_lots_edit_lot1_btn_locator} = jquery=#Lots #collapseLots #Lots0 .actions-wrapper a.btn.btn-default.btn-update.js-form-popup-update:first  
275 -${tender_form_lots_add_item_btn_locator} = jquery=#Lots #collapseLots #Lots0 .actions-wrapper a.js-form-popup-add  
276 -${tender_form_lots_remove_item_btn_locator_tpl} = jquery=#collapseLots0 .js-form-popup-panel[data-title*="%item_id%"] .actions-wrapper .js-form-popup-remove  
277 -${tender_lots_remove_item_form_submit_success_msg} = Ви дійсно бажаєте видалити цей елемент?  
278 -#${not_alert_opened_close_btn_locator} = jquery=.animated-content .js-btn-confirm  
279 -${not_alert_opened_close_btn_locator} = $('.animated-content .js-btn-confirm').trigger("click")  
280 -${tender_form_lots_add_item_reporting_btn_locator} = jquery=.form-group-popup-panel[data-attribute="items"]:last #Items0 .js-form-popup-update  
281 -##### EOF - TMP #####  
282 -  
283 -#item  
284 -${tender_item_1_tabs_item_btn_locator} jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0)  
285 -${tender_item_2_tabs_item_btn_locator} jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1)  
286 -${tender_item_3_tabs_item_btn_locator} jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(2)  
287 -  
288 -${tender_form_general_panel_update_award_reporting_btn_locator} = jquery=#Award .js-form-popup-update  
289 -${tender_form_general_panel_update_award_negotiation_btn_locator} = jquery=.js-form-popup-panel [data-attribute="awards"] .actions-wrapper .js-form-popup-update  
290 -${tender_form_general_panel_add_award_negotiation_btn_locator} = jquery=.modal.modal-form [href="#add-awards"]  
291 -  
292 -#add\remove feature  
293 -#${tender_form_features_panel_edit_btn_locator} = jquery=.fancybox-content [href$="#add-features"]  
294 -${tender_form_general_panel_update_feature_btn_locator} = jquery=#collapseGeneral .js-form-popup-update:nth(0)  
295 -${tender_update_feature_tender_btn_locator} = jquery=#collapseGeneral .js-form-popup-update:nth(0)  
296 -${tender_update_feature_lot_btn_locator} = jquery=#collapseLots #Lots0 #collapseLots0 .js-form-hidden-popup-panel .js-form-popup-panel[data-attribute*="features"] .actions-wrapper .js-form-popup-update:last  
297 -${tender_update_feature_item_btn_locator} = jquery=#collapseLots #Lots0 #collapseLots0 .js-form-hidden-popup-panel:nth(0) .actions-wrapper .js-form-popup-update:nth(0)  
298 -${tender_feature_dell_btn_locator} = jquery=.fancybox-is-open .nav.nav-pills.js-nav.allow-empty .fa.fa-times:last  
299 -${tender_feature_form_submit_success_msg} = Ви впевнені що бажаєте видалити поточний неціновий критерій?  
300 -${tender_feature_dell_submit_btn_locator} = jquery=.animated-content .js-btn-confirm  
301 -  
302 -${tender_form_general_tender_plan_id_locator} = jquery=[id$="form-plan_id"]  
303 -${tender_feature_switch_dell_btn_locator_tpl} = jquery=.fancybox-is-open .nav.nav-pills.js-nav.allow-empty li[data-title*="%feature_id%"] .js-dynamic-form-remove .fa.fa-times  
304 -#${tender_feature_switch_dell_btn_locator_tpl} = $('.fancybox-is-open .nav.nav-pills.js-nav.allow-empty li[data-title*="%feature_id%"] a[href*="#features"]').click()  
305 -  
306 -#award reporting  
307 -${tender_form_award_organization_name_locator} = jquery=[id$="-award_organization_name"]  
308 -${tender_form_award_organization_identifier_code_locator} = jquery=[id$="-award_organization_identifier_code"]  
309 -${tender_form_award_organization_scale_locator} = jquery=[id$="-award_organization_scale"]  
310 -${tender_form_award_organization_region_id_locator} = jquery=[id$="-award_organization_region_id"]  
311 -${tender_form_award_organization_postal_code_locator} = jquery=[id$="-award_organization_postal_code"]  
312 -${tender_form_award_organization_locality_locator} = jquery=[id$="-award_organization_locality"]  
313 -${tender_form_award_organization_street_address_locator} = jquery=[id$="-award_organization_street_address"]  
314 -${tender_form_award_organization_contact_point_name_locator} = jquery=[id$="-award_organization_contact_point_name"]  
315 -${tender_form_award_organization_contact_point_email_locator} = jquery=[id$="-award_organization_contact_point_email"]  
316 -${tender_form_award_organization_contact_point_phone_locator} = jquery=[id$="-award_organization_contact_point_phone"]  
317 -${tender_form_award_budget_locator} = jquery=[id$="-award_value_amount"]  
318 -  
319 -#stage2button  
320 -${tender_stage2_open_btn_locator} = jquery=#aside-part-pjax a[href*="/tender/confirm-stage2"]  
321 -${tender_stage2_submit_success_msg} = Ви впевнені що бажаєте підтвердити готовність переходу до другого етапу?  
322 -${tender_stage2_submit_success_btn_locator} = jquery=.jconfirm-box.animated-content .js-btn-confirm  
323 -${tender_stage2_submit_js_success_btn_locator} = $('.jconfirm-box.animated-content .js-btn-confirm').click()  
324 -${tender_stage2_submit_alert_success_msg} = Підтвердження успішно надане.  
325 -#search  
326 -${tender_form_search_btn_locator} = jquery=#DymamicSearch .dynamic-search-submit .js-submit-btn  
327 -  
328 -${popup_opened_content_success_locator} = Відмінити  
329 -${tender_form_general_panel_edit_btn_locator} = jquery=#General #headingGeneral .actions-wrapper .js-form-popup-update  
330 -${tender_form_general_panel_draft_mode_input_locator} = jquery=[id*="-draft_mode"]  
331 -${tender_form_general_panel_document_stage2_input_locator} = jquery=#collapseGeneral .actions-wrapper .js-btn-add-form-popup-panel[data-attribute="documents"]  
332 -${stage2_form_add_document_type_input_locator} = jquery=.js-dynamic-form-content-item:last .document-type select[id*="-document_type"]  
333 -${stage2_form_add_document_description_btn_locator} = jquery=.js-dynamic-form-content-item:last [href$="#edit"]:last  
334 -${stage2_form_add_document_description_input_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in textarea[id*="-description"].form-control  
335 -${stage2_form_add_document_close_description_btn_locator} = jquery=.js-dynamic-form-content-item:last .popover.fade.top.in [href$="#close"]  
336 -  
337 -  
338 -  
1 -*** Settings ***  
2 -  
3 -Resource playtender_common.robot  
4 -Resource playtender_variables.robot  
5 -Resource playtender_question.robot  
6 -Resource playtender_claim.robot  
7 -Resource playtender_bid.robot  
8 -Resource playtender_viewer.robot  
9 -Resource playtender_viewer_variables.robot  
10 -  
11 -*** Keywords ***  
12 -  
13 -get value from features  
14 - [Arguments] ${feature_id} ${field_name}  
15 - [Documentation] Отримати значення поля field_name з нецінового показника з feature_id в описі для тендера tender_uaid.  
16 -  
17 - wait until page does not contain element with reloading ${tender_sync_element_locator}  
18 - ${tender_features_new_value_locator} = replace string ${tender_features_new_value_locator_tpl} %feature_id% ${feature_id}  
19 - wait until page contains element with reloading ${tender_features_new_value_locator}  
20 - ${return_value} = Run Keyword If 'title' == '${field_name}' Отримати інформацію із нецінового показника title ${feature_id}  
21 - ... ELSE IF 'description' == '${field_name}' Отримати інформацію із нецінового показника description ${feature_id}  
22 - ... ELSE IF 'featureOf' == '${field_name}' Отримати інформацію із нецінового показника featureOf ${feature_id}  
23 - [return] ${return_value}  
24 -  
25 -Отримати інформацію із нецінового показника title  
26 - [Arguments] ${feature_id}  
27 - [Documentation] Отримати значення поля title з нецінового показника з feature_id в описі для тендера tender_uaid.  
28 -  
29 - ${tender_features_title_value_locator} = replace string ${tender_features_title_value_locator_tpl} %feature_id% ${feature_id}  
30 - ${return_value} = get value by locator on opened page ${tender_features_title_value_locator}  
31 - [return] ${return_value}  
32 -  
33 -Отримати інформацію із нецінового показника description  
34 - [Arguments] ${feature_id}  
35 - [Documentation] Отримати значення поля description з нецінового показника з feature_id в описі для тендера tender_uaid.  
36 -  
37 - ${tender_features_description_value_locator} = replace string ${tender_features_description_value_locator_tpl} %feature_id% ${feature_id}  
38 - ${return_value} = get value by locator on opened page ${tender_features_description_value_locator}  
39 - [return] ${return_value}  
40 -  
41 -Отримати інформацію із нецінового показника featureOf  
42 - [Arguments] ${feature_id}  
43 - [Documentation] Отримати значення поля featureOf з нецінового показника з feature_id в описі для тендера tender_uaid.  
44 -  
45 - ${tender_features_featureof_value_locator} = replace string ${tender_features_featureof_value_locator_tpl} %feature_id% ${feature_id}  
46 - ${return_value} = get value by locator on opened page ${tender_features_featureof_value_locator}  
47 - [return] ${return_value}  
48 -  
49 -  
50 -get value from item  
51 - [Arguments] ${item_id} ${field_name}  
52 - [Documentation] Отримати значення поля field_name з предмету з item_id в описі для тендера tender_uaid.  
53 -  
54 -# ${return_value} = Run Keyword If 'title' == '${field_name}' Отримати інформацію із предмету title ${item_id}  
55 -# ... ELSE IF 'description' == '${field_name}' Отримати інформацію із предмету description ${item_id}  
56 -# ... ELSE IF 'featureOf' == '${field_name}' Отримати інформацію із предмету featureOf ${item_id]}  
57 - ${tender_items_new_value_locator} = replace string ${tender_items_new_value_locator_tpl} %item_id% ${item_id}  
58 - wait until page contains element with reloading ${tender_items_new_value_locator}  
59 - log many ${item_id}  
60 - Run Keyword And Return If 'description' == '${field_name}' Отримати інформацію із предмету description ${item_id}  
61 - Run Keyword And Return If 'deliveryDate.startDate' == '${field_name}' Отримати інформацію із предмету deliveryDate.startDate ${item_id}  
62 - Run Keyword And Return If 'deliveryDate.endDate' == '${field_name}' Отримати інформацію із предмету deliveryDate.endDate ${item_id}  
63 - Run Keyword And Return If 'deliveryAddress.countryName' == '${field_name}' Отримати інформацію із предмету deliveryAddress.countryName ${item_id}  
64 - Run Keyword And Return If 'deliveryAddress.postalCode' == '${field_name}' Отримати інформацію із предмету deliveryAddress.postalCode ${item_id}  
65 - Run Keyword And Return If 'deliveryAddress.region' == '${field_name}' Отримати інформацію із предмету deliveryAddress.region ${item_id}  
66 - Run Keyword And Return If 'deliveryAddress.locality' == '${field_name}' Отримати інформацію із предмету deliveryAddress.locality ${item_id}  
67 - Run Keyword And Return If 'deliveryAddress.streetAddress' == '${field_name}' Отримати інформацію із предмету deliveryAddress.streetAddress ${item_id}  
68 - Run Keyword And Return If 'classification.scheme' == '${field_name}' Отримати інформацію із предмету classification.scheme ${item_id}  
69 - Run Keyword And Return If 'classification.id' == '${field_name}' Отримати інформацію із предмету classification.id ${item_id}  
70 - Run Keyword And Return If 'classification.description' == '${field_name}' Отримати інформацію із предмету classification.description ${item_id}  
71 - Run Keyword And Return If 'additionalClassifications[0].scheme' == '${field_name}' Отримати інформацію із предмету additionalClassifications[0].scheme ${item_id}  
72 - Run Keyword And Return If 'additionalClassifications[0].id' == '${field_name}' Отримати інформацію із предмету additionalClassifications[0].id ${item_id}  
73 - Run Keyword And Return If 'additionalClassifications[0].description' == '${field_name}' Отримати інформацію із предмету additionalClassifications[0].description ${item_id}  
74 - Run Keyword And Return If 'unit.name' == '${field_name}' Отримати інформацію із предмету unit.name ${item_id}  
75 - Run Keyword And Return If 'unit.code' == '${field_name}' Отримати інформацію із предмету unit.code ${item_id}  
76 - Run Keyword And Return If 'quantity' == '${field_name}' Отримати інформацію із предмету quantity ${item_id}  
77 -# [return] ${return_value}  
78 -  
79 -  
80 -Отримати інформацію із предмету description  
81 - [Arguments] ${item_id}  
82 - [Documentation] Отримати значення поля description з предмету з item_id в описі для тендера tender_uaid.  
83 -  
84 - log many ${item_id}  
85 - ${tender_items_description_value_locator} = run keyword if ${number_of_lots} > 0 replace string ${tender_items_description_value_locator_tpl} %item_id% ${item_id}  
86 - ... ELSE replace string ${tender_items_no_lot_description_value_locator_tpl} %item_id% ${item_id}  
87 - ${return_value} = get value by locator on opened page ${tender_items_description_value_locator}  
88 - [return] ${return_value}  
89 -  
90 -Отримати інформацію із предмету deliveryDate.startDate  
91 - [Arguments] ${item_id}  
92 - [Documentation] Отримати значення поля deliveryDate.startDate з предмету з item_id в описі для тендера tender_uaid.  
93 -  
94 - ${tender_items_delivery_start_date_value_locator} = replace string ${tender_items_delivery_start_date_value_locator_tpl} %item_id% ${item_id}  
95 - ${return_value} = get value by locator on opened page ${tender_items_delivery_start_date_value_locator}  
96 - [return] ${return_value}  
97 -  
98 -Отримати інформацію із предмету deliveryDate.endDate  
99 - [Arguments] ${item_id}  
100 - [Documentation] Отримати значення поля deliveryDate.endDate з предмету з item_id в описі для тендера tender_uaid.  
101 -  
102 - ${tender_items_delivery_end_date_value_locator} = replace string ${tender_items_delivery_end_date_value_locator_tpl} %item_id% ${item_id}  
103 - ${return_value} = get value by locator on opened page ${tender_items_delivery_end_date_value_locator}  
104 - [return] ${return_value}  
105 -  
106 -Отримати інформацію із предмету deliveryAddress.countryName  
107 - [Arguments] ${item_id}  
108 - [Documentation] Отримати значення поля deliveryAddress.countryName з предмету з item_id в описі для тендера tender_uaid.  
109 -  
110 - ${tender_items_delivery_country_value_locator} = replace string ${tender_items_delivery_country_value_locator_tpl} %item_id% ${item_id}  
111 - ${return_value} = get value by locator on opened page ${tender_items_delivery_country_value_locator}  
112 - [return] ${return_value}  
113 -  
114 -Отримати інформацію із предмету deliveryAddress.postalCode  
115 - [Arguments] ${item_id}  
116 - [Documentation] Отримати значення поля deliveryAddress.postalCode з предмету з item_id в описі для тендера tender_uaid.  
117 -  
118 - ${tender_items_delivery_postal_code_value_locator} = replace string ${tender_items_delivery_postal_code_value_locator_tpl} %item_id% ${item_id}  
119 - ${return_value} = get value by locator on opened page ${tender_items_delivery_postal_code_value_locator}  
120 - [return] ${return_value}  
121 -  
122 -Отримати інформацію із предмету deliveryAddress.region  
123 - [Arguments] ${item_id}  
124 - [Documentation] Отримати значення поля deliveryAddress.region з предмету з item_id в описі для тендера tender_uaid.  
125 -  
126 - ${tender_items_delivery_region_id_value_locator} = replace string ${tender_items_delivery_region_id_value_locator_tpl} %item_id% ${item_id}  
127 - ${return_value} = get value by locator on opened page ${tender_items_delivery_region_id_value_locator}  
128 - [return] ${return_value}  
129 -  
130 -Отримати інформацію із предмету deliveryAddress.locality  
131 - [Arguments] ${item_id}  
132 - [Documentation] Отримати значення поля deliveryAddress.locality з предмету з item_id в описі для тендера tender_uaid.  
133 -  
134 - ${tender_items_delivery_locality_value_locator} = replace string ${tender_items_delivery_locality_value_locator_tpl} %item_id% ${item_id}  
135 - ${return_value} = get value by locator on opened page ${tender_items_delivery_locality_value_locator}  
136 - [return] ${return_value}  
137 -  
138 -Отримати інформацію із предмету deliveryAddress.streetAddress  
139 - [Arguments] ${item_id}  
140 - [Documentation] Отримати значення поля deliveryAddress.streetAddress з предмету з item_id в описі для тендера tender_uaid.  
141 -  
142 - ${tender_items_delivery_street_address_value_locator} = replace string ${tender_items_delivery_street_address_value_locator_tpl} %item_id% ${item_id}  
143 - ${return_value} = get value by locator on opened page ${tender_items_delivery_street_address_value_locator}  
144 - [return] ${return_value}  
145 -  
146 -Отримати інформацію із предмету classification.scheme  
147 - [Arguments] ${item_id}  
148 - [Documentation] Отримати значення поля classification.scheme з предмету з item_id в описі для тендера tender_uaid.  
149 -  
150 - ${tender_items_classification_scheme_value_locator} = replace string ${tender_items_classification_scheme_value_locator_tpl} %item_id% ${item_id}  
151 - ${return_value} = get value by locator on opened page ${tender_items_classification_scheme_value_locator}  
152 - [return] ${return_value}  
153 -  
154 -Отримати інформацію із предмету classification.id  
155 - [Arguments] ${item_id}  
156 - [Documentation] Отримати значення поля classification.id з предмету з item_id в описі для тендера tender_uaid.  
157 -  
158 - ${tender_items_classification_code_value_locator} = replace string ${tender_items_classification_code_value_locator_tpl} %item_id% ${item_id}  
159 - ${return_value} = get value by locator on opened page ${tender_items_classification_code_value_locator}  
160 - [return] ${return_value}  
161 -  
162 -Отримати інформацію із предмету classification.description  
163 - [Arguments] ${item_id}  
164 - [Documentation] Отримати значення поля classification.description з предмету з item_id в описі для тендера tender_uaid.  
165 -  
166 - ${tender_items_classification_description_value_locator} = replace string ${tender_items_classification_description_value_locator_tpl} %item_id% ${item_id}  
167 - ${return_value} = get value by locator on opened page ${tender_items_classification_description_value_locator}  
168 - [return] ${return_value}  
169 -  
170 -Отримати інформацію із предмету additionalClassifications[0].scheme  
171 - [Arguments] ${item_id}  
172 - [Documentation] Отримати значення поля additionalClassifications[0].scheme з предмету з item_id в описі для тендера tender_uaid.  
173 -  
174 - ${tender_items_additional_classification_scheme_value_locator} = replace string ${tender_items_additional_classification_scheme_value_locator_tpl} %item_id% ${item_id}  
175 - ${return_value} = get value by locator on opened page ${tender_items_additional_classification_scheme_value_locator}  
176 - [return] ${return_value}  
177 -  
178 -Отримати інформацію із предмету additionalClassifications[0].id  
179 - [Arguments] ${item_id}  
180 - [Documentation] Отримати значення поля additionalClassifications[0].id з предмету з item_id в описі для тендера tender_uaid.  
181 -  
182 - ${tender_items_additional_classification_code_value_locator} = replace string ${tender_items_additional_classification_code_value_locator_tpl} %item_id% ${item_id}  
183 - ${return_value} = get value by locator on opened page ${tender_items_additional_classification_code_value_locator}  
184 - [return] ${return_value}  
185 -  
186 -Отримати інформацію із предмету additionalClassifications[0].description  
187 - [Arguments] ${item_id}  
188 - [Documentation] Отримати значення поля additionalClassifications[0].description з предмету з item_id в описі для тендера tender_uaid.  
189 -  
190 - ${tender_items_additional_classification_description_value_locator} = replace string ${tender_items_additional_classification_description_value_locator_tpl} %item_id% ${item_id}  
191 - ${return_value} = get value by locator on opened page ${tender_items_additional_classification_description_value_locator}  
192 - [return] ${return_value}  
193 -  
194 -Отримати інформацію із предмету unit.name  
195 - [Arguments] ${item_id}  
196 - [Documentation] Отримати значення поля unit.name з предмету з item_id в описі для тендера tender_uaid.  
197 -  
198 - ${tender_items_unit_title_value_locator} = replace string ${tender_items_unit_title_value_locator_tpl} %item_id% ${item_id}  
199 - ${return_value} = get value by locator on opened page ${tender_items_unit_title_value_locator}  
200 - [return] ${return_value}  
201 -  
202 -Отримати інформацію із предмету unit.code  
203 - [Arguments] ${item_id}  
204 - [Documentation] Отримати значення поля unit.code з предмету з item_id в описі для тендера tender_uaid.  
205 -  
206 - ${tender_items_unit_code_value_locator} = replace string ${tender_items_unit_code_value_locator_tpl} %item_id% ${item_id}  
207 - ${return_value} = get value by locator on opened page ${tender_items_unit_code_value_locator}  
208 - [return] ${return_value}  
209 -  
210 -Отримати інформацію із предмету quantity  
211 - [Arguments] ${item_id}  
212 - [Documentation] Отримати значення поля quantity з предмету з item_id в описі для тендера tender_uaid.  
213 -  
214 - ${tender_items_quantity_value_locator} = replace string ${tender_items_quantity_value_locator_tpl} %item_id% ${item_id}  
215 - ${return_value} = get value by locator on opened page ${tender_items_quantity_value_locator} float  
216 - [return] ${return_value}  
217 -  
218 -get value from lot  
219 - [Arguments] ${lot_id} ${field_name}  
220 - [Documentation] Отримати значення поля field_name з лоту з lot_id в описі для тендера tender_uaid.  
221 -  
222 - Run Keyword And Return If 'title' == '${field_name}' Отримати інформацію із лоту title ${lot_id}  
223 - Run Keyword And Return If 'description' == '${field_name}' Отримати інформацію із лоту description ${lot_id}  
224 - Run Keyword And Return If 'value.amount' == '${field_name}' Отримати інформацію із лоту value.amount ${lot_id}  
225 - Run Keyword And Return If 'minimalStep.amount' == '${field_name}' Отримати інформацію із лоту minimalStep.amount ${lot_id}  
226 - Run Keyword And Return If 'value.currency' == '${field_name}' Отримати інформацію із лоту value.currency ${lot_id}  
227 - Run Keyword And Return If 'value.valueAddedTaxIncluded' == '${field_name}' Отримати інформацію із лоту value.valueAddedTaxIncluded ${lot_id}  
228 - Run Keyword And Return If 'minimalStep.currency' == '${field_name}' Отримати інформацію із лоту minimalStep.currency ${lot_id}  
229 - Run Keyword And Return If 'minimalStep.valueAddedTaxIncluded' == '${field_name}' Отримати інформацію із лоту minimalStep.valueAddedTaxIncluded ${lot_id}  
230 -# Run Keyword And Return If 'auctionPeriod.startDate' == '${field_name}' get text jquery=#lots .tabs__content .tabs__pane--visible .auction-period .value .start-date  
231 - Run Keyword And Return If 'auctionPeriod.startDate' == '${field_name}' Отримати інформацію із лоту auctionPeriod.startDate ${lot_id}  
232 - Run Keyword And Return If 'auctionPeriod.endDate' == '${field_name}' Отримати інформацію із лоту auctionPeriod.endDate ${lot_id}  
233 -# Run Keyword And Return If 'auctionPeriod.endDate' == '${field_name}' get text jquery=#lots .tabs__content .tabs__pane--visible .auction-period .value .end-date  
234 - Run Keyword And Return If 'minimalStepPercentage' == '${field_name}' Отримати інформацію із лоту minimalStepPercentage ${lot_id}  
235 - Run Keyword And Return If 'fundingKind' == '${field_name}' Отримати інформацію із лоту fundingKind ${lot_id}  
236 - Run Keyword And Return If 'yearlyPaymentsPercentageRange' == '${field_name}' Отримати інформацію із лоту yearlyPaymentsPercentageRange ${lot_id}  
237 -  
238 -  
239 -Отримати інформацію із лоту title  
240 - [Arguments] ${lot_id}  
241 - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.  
242 -  
243 -# ${tender_lot_title_value_locator} = replace string ${tender_lot_title_value_locator_tpl} %lot_id% ${lot_id}  
244 - ${return_value} = get value by locator on opened page ${tender_lot_title_value_locator}  
245 - [return] ${return_value}  
246 -  
247 -Отримати інформацію із лоту description  
248 - [Arguments] ${lot_id}  
249 - [Documentation] Отримати значення поля description з лоту з lot_id в описі для тендера tender_uaid.  
250 -  
251 -# ${tender_lot_description_value_locator} = replace string ${tender_lot_description_value_locator_tpl} %lot_id% ${lot_id}  
252 - ${return_value} = get value by locator on opened page ${tender_lot_description_value_locator}  
253 - [return] ${return_value}  
254 -  
255 -Отримати інформацію із лоту value.amount  
256 - [Arguments] ${lot_id}  
257 - [Documentation] Отримати значення поля description з лоту з lot_id в описі для тендера tender_uaid.  
258 -  
259 -# ${tender_lot_value_amount_value_locator} = replace string ${tender_lot_value_amount_value_locator_tpl} %lot_id% ${lot_id}  
260 - ${return_value} = get value by locator on opened page ${tender_lot_value_amount_value_locator} ${tender_lot_value_amount_value_type}  
261 - [return] ${return_value}  
262 -  
263 -Отримати інформацію із лоту minimalStep.amount  
264 - [Arguments] ${lot_id}  
265 - [Documentation] Отримати значення поля featureOf з лоту з lot_id в описі для тендера tender_uaid.  
266 -  
267 -# ${tender_lot_minimal_step_amount_value_locator} = replace string ${tender_lot_minimal_step_amount_value_locator_tpl} %lot_id% ${lot_id}  
268 - ${return_value} = get value by locator on opened page ${tender_lot_minimal_step_amount_value_locator} ${tender_lot_minimal_step_amount_value_type}  
269 - [return] ${return_value}  
270 -  
271 -Отримати інформацію із лоту value.currency  
272 - [Arguments] ${lot_id}  
273 - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.  
274 -  
275 -# ${tender_lot_value_currency_value_locator} = replace string ${tender_lot_value_currency_value_locator_tpl} %lot_id% ${lot_id}  
276 - ${return_value} = get value by locator on opened page ${tender_lot_value_currency_value_locator}  
277 - [return] ${return_value}  
278 -  
279 -Отримати інформацію із лоту value.valueAddedTaxIncluded  
280 - [Arguments] ${lot_id}  
281 - [Documentation] Отримати значення поля description з лоту з lot_id в описі для тендера tender_uaid.  
282 -  
283 -# ${tender_lot_value_value_added_tax_included_value_locator} = replace string ${tender_lot_value_value_added_tax_included_value_locator_tpl} %lot_id% ${lot_id}  
284 - ${return_value} = get value by locator on opened page ${tender_lot_value_value_added_tax_included_value_locator}  
285 - ${return_value} = set variable if 'з ПДВ' in '${return_value}' ${True} ${False}  
286 -# ${return_value} = set variable if ${return_value} == 1 True  
287 - [return] ${return_value}  
288 -  
289 -Отримати інформацію із лоту minimalStep.currency  
290 - [Arguments] ${lot_id}  
291 - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.  
292 -  
293 -# ${tender_lot_minimal_step_currency_value_locator} = replace string ${tender_lot_minimal_step_currency_value_locator_tpl} %lot_id% ${lot_id}  
294 - ${return_value} = get value by locator on opened page ${tender_lot_minimal_step_currency_value_locator}  
295 - ${return_value} = set variable if 'UAH' in '${return_value}' UAH  
296 - [return] ${return_value}  
297 -  
298 -Отримати інформацію із лоту minimalStep.valueAddedTaxIncluded  
299 - [Arguments] ${lot_id}  
300 - [Documentation] Отримати значення поля description з лоту з lot_id в описі для тендера tender_uaid.  
301 -  
302 -# ${tender_lot_value_minimal_step_added_tax_included_value_locator} = replace string ${tender_lot_minimal_step_value_added_tax_included_value_locator_tpl} %lot_id% ${lot_id}  
303 -# ${return_value} = get value by locator on opened page ${tender_lot_minimal_step_value_added_tax_included_value_locator}  
304 - ${return_value} = get value by locator on opened page ${tender_lot_value_value_added_tax_included_value_locator}  
305 - ${return_value} = set variable if 'з ПДВ' in '${return_value}' ${True} ${False}  
306 - [return] ${return_value}  
307 -  
308 -Отримати інформацію із лоту auctionPeriod.startDate  
309 - [Arguments] ${lot_id}  
310 - [Documentation] Отримати значення поля featureOf з лоту з lot_id в описі для тендера tender_uaid.  
311 -  
312 -# ${tender_lot_delivery_region_id_value_locator} = replace string ${tender_lot_delivery_region_id_value_locator_tpl} %lot_id% ${lot_id}  
313 - ${return_value} = get value by locator on opened page ${tender_auctionPeriod_startDate_value_locator}  
314 -# ${return_value} = parse_complaintPeriod_date ${return_value}  
315 - [return] ${return_value}  
316 -  
317 -Отримати інформацію із лоту auctionPeriod.endDate  
318 - [Arguments] ${lot_id}  
319 - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.  
320 -  
321 -# ${tender_lot_delivery_locality_value_locator} = replace string ${tender_lot_delivery_locality_value_locator_tpl} %lot_id% ${lot_id}  
322 - ${return_value} = get value by locator on opened page ${tender_auctionPeriod_endDate_value_locator}  
323 - [return] ${return_value}  
324 -  
325 -Отримати інформацію із лоту minimalStepPercentage  
326 - [Arguments] ${lot_id}  
327 - [Documentation] Отримати значення поля minimalStepPercentage з лоту з lot_id в описі для тендера tender_uaid.  
328 -  
329 -# ${tender_lot_delivery_street_address_value_locator} = replace string ${tender_lot_delivery_street_address_value_locator_tpl} %lot_id% ${lot_id}  
330 -# ${return_value} = get field_value by field_name on opened page ${tender_minimalStepPercentage_value_locator}  
331 - ${return_value} = get value by locator on opened page ${tender_minimalStepPercentage_value_locator}  
332 - ${return_value} = convert_string_to_float ${return_value}  
333 - [return] ${return_value}  
334 -  
335 -Отримати інформацію із лоту fundingKind  
336 - [Arguments] ${lot_id}  
337 - [Documentation] Отримати значення поля featureOf з лоту з lot_id в описі для тендера tender_uaid.  
338 -  
339 -# ${tender_lot_classification_scheme_value_locator} = replace string ${tender_lot_classification_scheme_value_locator_tpl} %lot_id% ${lot_id}  
340 - ${return_value} = get value by locator on opened page ${tender_fundingKind_value_locator}  
341 - [return] ${return_value}  
342 -  
343 -Отримати інформацію із лоту yearlyPaymentsPercentageRange  
344 - [Arguments] ${lot_id}  
345 - [Documentation] Отримати значення поля title з лоту з lot_id в описі для тендера tender_uaid.  
346 -  
347 -# ${tender_lot_classification_code_value_locator} = replace string ${tender_lot_classification_code_value_locator_tpl} %lot_id% ${lot_id}  
348 -# ${field_name} = set variable tender.${field_name}.value  
349 -# ${return_value} = get field_value by field_name on opened page ${tender_yearlyPaymentsPercentageRange_value_locator}  
350 - ${return_value} = get value by locator on opened page ${tender_yearlyPaymentsPercentageRange_value_locator}  
351 - ${return_value} = convert_string_to_float ${return_value}  
352 - [return] ${return_value}  
353 -  
354 -Отримати інформацію із документа title  
355 - [Arguments] ${doc_id}  
356 - [Documentation] Отримати значення поля title з документу з doc_id в описі для тендера tender_uaid.  
357 -  
358 -#заготовка  
359 - ${tender_new_doc_locator} = replace string ${tender_new_doc_locator_tpl} %doc_id% ${doc_id}  
360 - wait until page contains element with reloading ${tender_new_doc_locator}  
361 -  
362 - ${tender_new_doc__title_locator} = replace string ${tender_new_doc_title_locator_tpl} %doc_id% ${doc_id}  
363 -  
364 - ${return_value} = Execute Javascript return ${tender_new_doc__title_locator}  
365 - ##${return_value} = get text ${tender_new_doc_locator}  
366 - #${return_value} = get value by locator on opened page ${tender_new_doc_locator}  
367 - [return] ${return_value}  
368 -  
369 -wait for tender status  
370 - [Documentation] Очикування відповідного статусу закупівлі, в залежності від кейворда  
371 -  
372 - Run Keyword If '${TEST_NAME}' == 'Неможливість завантажити документ першим учасником після закінчення прийому пропозицій' Wait Until Keyword Succeeds 480 s 20 s Wait For EndEnquire  
373 - Run Keyword If '${TEST_NAME}' == 'Неможливість завантажити документ другим учасником після закінчення прийому пропозицій' Wait Until Keyword Succeeds 480 s 20 s Wait For EndEnquire  
374 - Run Keyword If '${TEST_NAME}' == 'Неможливість задати запитання на тендер після закінчення періоду прийому пропозицій' Wait Until Keyword Succeeds 480 s 20 s Wait For EndEnquire  
375 - #Run Keyword If '${TEST_NAME}' == 'Неможливість задати запитання на тендер після закінчення періоду уточнень' Wait Until Keyword Succeeds 480 s 20 s Wait For EndEnquire  
376 - Run Keyword If '${TEST_NAME}' == 'Можливість подати пропозицію першим учасником' Wait Until Keyword Succeeds 480 s 20 s Wait For TenderPeriod  
377 - Run Keyword If '${TEST_NAME}' == 'Можливість подати пропозицію другим учасником' Wait Until Keyword Succeeds 480 s 20 s Wait For TenderPeriod  
378 - Run Keyword If '${TEST_NAME}' == 'Відображення дати закінчення періоду блокування перед початком аукціону' Wait Until Keyword Succeeds 80 s 20 s Wait For AuctionPeriod  
379 - Run Keyword If '${TEST_NAME}' == 'Можливість підтвердити першу пропозицію кваліфікації' Wait Until Keyword Succeeds 80 s 20 s Wait For PreQualificationPeriod  
380 - Run Keyword If '${TEST_NAME}' == 'Можливість підтвердити другу пропозицію кваліфікації' Wait Until Keyword Succeeds 80 s 20 s Wait For PreQualificationPeriod  
381 - Run Keyword If '${TEST_NAME}' == 'Можливість дочекатися завершення роботи мосту' Wait Until Keyword Succeeds 6000 s 20 s Wait For CompletePeriod  
382 - #cat Run Keyword If '${TEST_NAME}' == 'Можливість дочекатися початку періоду очікування' Wait Until Keyword Succeeds 600 s 20 s Wait For PreQualificationsStandPeriod  
383 - Run Keyword If '${TEST_NAME}' == 'Можливість дочекатися початку періоду очікування' Wait Until Keyword Succeeds 600 s 20 s Wait For ActiveStage2Pending  
384 - Run Keyword If '${TEST_NAME}' == 'Можливість перевести тендер в статус очікування обробки мостом' Wait Until Keyword Succeeds 600 s 20 s Wait For ActiveStage2Waiting  
385 - Run Keyword If '${TEST_NAME}' == 'Можливість дочекатись дати закінчення прийому пропозицій' and '${SUITE NAME}' == 'Tests Files.Complaints' Wait Until Keyword Succeeds 800 s 20 s Wait For NotTenderPeriod  
386 - Run Keyword If '${TEST_NAME}' == 'Можливість дочекатись дати початку періоду кваліфікації' and '${SUITE NAME}' == 'Tests Files.Complaints' Wait Until Keyword Succeeds 800 s 20 s Wait For QualificationsStandPeriod  
387 - Run Keyword If '${TEST_NAME}' == 'Відображення статусу успішного завершення тендера' Wait Until Keyword Succeeds 6000 s 20 s Wait For CompletePeriod  
388 -  
389 -Wait For EndEnquire  
390 - [Documentation] Очикування статусу закупівлі закінчення обговорення  
391 -  
392 - Reload Page  
393 - ${return_value} = Get text ${tender_status_value_locator}  
394 - Log Many CAT ${return_value}  
395 - Page Should Not Contain Element ${tender_status_active_tendering_value_locator}  
396 -  
397 -Wait For TenderPeriod  
398 - [Documentation] Очикування статусу закупівлі початку подачи пропозицій  
399 -  
400 - Reload Page  
401 - ${return_value} = Get text ${tender_status_value_locator}  
402 - Log Many CAT ${return_value}  
403 - Page Should Contain Element ${tender_status_active_tendering_value_locator}  
404 -  
405 -Wait For AuctionPeriod  
406 - [Documentation] Очикування статусу закупівлі аукціон  
407 -  
408 - Reload Page  
409 - ${return_value} = Get text ${tender_status_value_locator}  
410 - Log Many CAT ${return_value}  
411 - Page Should Contain Element ${tender_status_active_auction_value_locator}  
412 -  
413 -Wait For PreQualificationPeriod  
414 - [Documentation] Очикування статусу закупівлі аукціон  
415 -  
416 - Reload Page  
417 - ${return_value} = Get text ${tender_status_value_locator}  
418 - Log Many CAT ${return_value}  
419 - Page Should Contain Element ${tender_status_active_pre_qualification_value_locator}  
420 -  
421 -Wait For CompletePeriod  
422 - [Documentation] Очикування статусу закупівлі завершення  
423 -  
424 - Reload Page  
425 - ${return_value} = Get text ${tender_status_value_locator}  
426 - Log Many CAT ${return_value}  
427 - Page Should Contain Element ${tender_status_complete_value_locator}  
428 -  
429 -Wait For ActiveStage2Pending  
430 - [Documentation] Очикування статусу закупівлі завершення  
431 -  
432 - Reload Page  
433 - ${return_value} = Get text ${tender_status_value_locator}  
434 - Log Many CAT ${return_value}  
435 - Page Should Contain Element ${tender_status_active_stage2_pending_value_locator}  
436 -  
437 -Wait For ActiveStage2Waiting  
438 - [Documentation] Очикування статусу закупівлі завершення  
439 -  
440 - Reload Page  
441 - ${return_value} = Get text ${tender_status_value_locator}  
442 - Log Many CAT ${return_value}  
443 - Page Should Contain Element ${tender_status_active_stage2_waiting_value_locator}  
444 -  
445 -Wait For NotTenderPeriod  
446 - [Documentation] Очикування статусу закупівлі завершення  
447 -  
448 - Reload Page  
449 - ${return_value} = Get text ${tender_status_value_locator}  
450 - Log Many CAT ${return_value}  
451 - Page Should Contain Element ${tender_status_active_tendering_value_locator}  
452 -  
453 -Wait For QualificationsStandPeriod  
454 - [Documentation] Очикування статусу закупівлі завершення кваліфікації  
455 -  
456 - Reload Page  
457 - ${return_value} = Get text ${tender_status_value_locator}  
458 - Log Many CAT ${return_value}  
459 - Page Should Contain Element ${tender_status_active_qualification_value_locator}  
460 -  
461 -Wait For QualificationsPeriodEnd  
462 - [Documentation] Очикування дати завершення кваліфікації закупівлі  
463 -  
464 - Reload Page  
465 - ${complaintPeriod} = get value by locator on opened page ${tender_qualificationPeriod_endDate_value_locator}  
466 - Log Many CAT ${complaintPeriod}  
467 - Run Keyword If '${complaintPeriod}' == '' input text to exist visible input ${contract_contractform_date_start_input_locator} ${date_start}  
468 - :FOR ${INDEX} IN RANGE 1 60  
469 - \ Run Keyword If '${complaintPeriod}' != '' Exit For Loop  
470 - \ Reload Page  
471 - \ ${complaintPeriod} = get value by locator on opened page ${tender_qualificationPeriod_endDate_value_locator}  
472 -  
473 -Отримати інформацію із contracts[0].status  
474 - [Documentation] Отримати значення поля contracts[0].status  
475 -  
476 -# ${tmp} = get value by locator on opened page ${tender_contracts_0_status_value_locator}  
477 -# ${return_value} = Set Variable If '${tmp}' in 'Підписаний Новий' active other  
478 - Run Keyword If '${TEST_NAME}' == 'Відображення статусу підписаної угоди з постачальником переговорної процедури' Wait Until Keyword Succeeds 800 s 20 s Wait For contractactive  
479 - Run Keyword If '${TEST_NAME}' == 'Відображення статусу підписаної угоди з постачальником звіту про укладений договір' Wait Until Keyword Succeeds 800 s 20 s Wait For contractactive  
480 - Run Keyword If '${TEST_NAME}' == 'Відображення статусу підписаної угоди з постачальником закупівлі' Wait Until Keyword Succeeds 800 s 20 s Wait For contractactive  
481 - ${return_value} = get value by locator on opened page ${tender_contracts_0_status_value_locator}  
482 - [return] ${return_value}  
483 -  
484 -Wait For contractactive  
485 - [Documentation] Очикування статусу закупівлі початку подачи пропозицій  
486 -  
487 - Reload Page  
488 - ${return_value} = get value by locator on opened page ${tender_contracts_0_status_value_locator}  
489 - Page Should Contain Element ${tender_contracts_status_active_value_locator}  
490 -  
491 -Отримати інформацію із awards.complaintPeriod.endDate  
492 - [Documentation] Отримати значення поля awards.complaintPeriod.endDate  
493 -  
494 - run keyword and ignore error Wait Until Keyword Succeeds 600 s 30 s Wait For complaintPeriodendDate  
495 - ${return_value} = get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}  
496 -# ${return_value} = run keyword if '${mode}' in 'negotiation' get value by locator on opened page ${tender_awards_negotiation_complaintPeriod_endDate_value_locator}  
497 -# ... ELSE get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}  
498 -# ${return_value} = run keyword if '${mode}' in 'negotiation' parse_complaintPeriod_date ${return_value}  
499 -# ... ELSE set variable ${return_value}  
500 - [return] ${return_value}  
501 -  
502 -Отримати інформацію із complaintPeriod.endDate  
503 - [Documentation] Отримати значення поля complaintPeriod.endDate  
504 -  
505 - ${return_value} = get value by locator on opened page ${tender_complaintPeriod_endDate_value_locator}  
506 - [return] ${return_value}  
507 -  
508 -Wait For complaintPeriodendDate  
509 - [Documentation] Очикування появи дати завершення подачи скарг на кваліфікацію закупівлі в belowThreshold та below_funders  
510 -  
511 - reload page  
512 - ${complaintPeriod} = get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}  
513 - :FOR ${INDEX} IN RANGE 1 60  
514 - \ Run Keyword If '${complaintPeriod}' != '' Exit For Loop  
515 - \ Reload Page  
516 - \ ${complaintPeriod} = get value by locator on opened page ${tender_awards_complaintPeriod_endDate_value_locator}  
517 -  
518 -Отримати інформацію із minimalStep.amount  
519 - [Documentation] Отримати значення поля minimalStep.amount для тендера tender_uaid.  
520 -  
521 -# ${tender_lot_minimal_step_amount_value_locator} = replace string ${tender_lot_minimal_step_amount_value_locator_tpl} %lot_id% ${lot_id}  
522 - ${return_value} = run keyword if ${number_of_lots} > 0 get value by locator on opened page ${tender_lot_minimal_step_amount_value_locator} ${tender_lot_minimal_step_amount_value_type}  
523 - ... ELSE get value by locator on opened page ${tender_minimalStep_amount_value_locator} ${tender_lot_minimal_step_amount_value_type}  
524 - [return] ${return_value}  
525 -  
526 -Отримати інформацію із awards[0].documents[0].title  
527 - [Documentation] Отримати значення поля minimalStep.amount для тендера tender_uaid.  
528 -  
529 -# ${tender_lot_minimal_step_amount_value_locator} = replace string ${tender_lot_minimal_step_amount_value_locator_tpl} %lot_id% ${lot_id}  
530 -# click visible element ${tender_awards_negotiation_documents_btn_locator}  
531 - open popup by btn locator ${tender_awards_negotiation_documents_btn_locator}  
532 - ${return_value} = get value by locator on opened page ${tender_awards_0_documents_0_title_value_locator}  
533 - click visible element ${tender_awards_negotiation_documents_close_btn_locator}  
534 - [return] ${return_value}  
535 -  
536 -Wait For stage2button  
537 - [Documentation] Очикування кнопки переводу до другого етапу  
538 -  
539 - Reload Page  
540 - Page Should Contain Element ${tender_stage2_open_btn_locator}  
541 -  
542 -Отримати інформацію із qualificationPeriod.endDate  
543 - [Documentation] Отримати значення поля qualificationPeriod.endDate  
544 -  
545 -# run keyword and ignore error run keyword if '${mode}' in 'belowThreshold below_funders' Wait Until Keyword Succeeds 600 s 30 s Wait For complaintPeriodendDate  
546 -# run keyword and ignore error Wait Until Keyword Succeeds 600 s 30 s Wait For complaintPeriodendDate  
547 - ${return_value} = get value by locator on opened page ${tender_qualificationPeriod_endDate_value_locator}  
548 - ${return_value} = parse_complaintPeriod_date ${return_value}  
549 - [return] ${return_value}  
550 -  
551 -wait for agreements status active  
552 - [Documentation] Очикування статусу agreements active  
553 -  
554 - Reload Page  
555 - ${return_value} = get value by locator on opened page ${tender_agreements_0_status_value_locator}  
556 - Page Should Contain Element ${tender_agreements_status_active_value_locator}  
557 -  
558 -Wait date  
559 - [Arguments] ${date}  
560 - ${sleep}= wait_to_date ${date}  
561 - Run Keyword If ${sleep} > 0 Sleep ${sleep}  
562 -  
563 -  
564 -  
1 -*** Variables ***  
2 -  
3 -#features  
4 -${tender_features_title_value_locator_tpl} = jquery=#lots .tabs__pane--visible .feature-list-wrapper [data-title*="%feature_id%"] .hidden.info-wrapper .title  
5 -${tender_features_description_value_locator_tpl} = jquery=#lots .tabs__pane--visible .feature-list-wrapper [data-title*="%feature_id%"] .hidden.info-wrapper .description  
6 -${tender_features_featureof_value_locator_tpl} = jquery=#lots .tabs__pane--visible .feature-list-wrapper [data-title*="%feature_id%"] .hidden.info-wrapper .featureOf  
7 -${tender_features_new_value_locator_tpl} = jquery=.info-row.features div[data-title*="%feature_id%"]  
8 -  
9 -  
10 -#item view  
11 -${tender_items_new_value_locator_tpl} = jquery=.item-item-wrapper[data-title*="%item_id%"]  
12 -${tender_items_description_value_locator_tpl} = jquery=#lots .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] div.textvalue  
13 -${tender_items_no_lot_description_value_locator_tpl} = jquery=.pseudo-table .item-item-wrapper[data-title*="%item_id%"] div.textvalue  
14 -${tender_items_quantity_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .quantity-source  
15 -${tender_items_quantity_value_type} = float  
16 -${tender_items_unit_title_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .unit-title-source  
17 -${tender_items_unit_code_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .unit-code-source  
18 -${tender_items_classification_scheme_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .main-classification-scheme  
19 -${tender_items_classification_code_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .main-classification-code  
20 -${tender_items_classification_description_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .main-classification-description  
21 -${tender_items_additional_classification_scheme_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .additional-classification-scheme  
22 -${tender_items_additional_classification_code_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .additional-classification-code  
23 -${tender_items_additional_classification_description_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .additional-classification-description  
24 -${tender_items_delivery_country_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-country  
25 -${tender_items_delivery_region_id_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-region  
26 -${tender_items_delivery_postal_code_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-postalcode  
27 -${tender_items_delivery_locality_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-locality  
28 -${tender_items_delivery_street_address_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-street-address  
29 -${tender_items_delivery_start_date_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-start-date-source  
30 -${tender_items_delivery_end_date_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-end-date-source  
31 -${tender_items_delivery_latitude_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-latitude  
32 -${tender_items_delivery_longitude_value_locator_tpl} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper[data-title*="%item_id%"] .item-info-wrapper.hidden.info-wrapper .delivery-longitude  
33 -  
34 -#${tender_item_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .textvalue.hidden  
35 -${tender_item_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .description  
36 -${tender_item_description_ru_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper [id$='-description_ru']  
37 -${tender_item_description_en_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper [id$='-description_en']  
38 -${tender_item_quantity_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .quantity-source  
39 -${tender_item_quantity_value_type} = float  
40 -${tender_item_unit_title_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .unit-title-source  
41 -${tender_item_unit_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .unit-code-source  
42 -${tender_item_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-scheme  
43 -${tender_item_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-code  
44 -${tender_item_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-description  
45 -${tender_item_additional_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-scheme  
46 -${tender_item_additional_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-code  
47 -${tender_item_additional_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-description  
48 -${tender_item_delivery_region_id_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-country  
49 -${tender_item_delivery_postal_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-postalcode  
50 -${tender_item_delivery_locality_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-locality  
51 -${tender_item_delivery_street_address_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-street-address  
52 -${tender_item_delivery_start_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-start-date-source  
53 -${tender_item_delivery_end_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-end-date-source  
54 -${tender_item_delivery_latitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-latitude  
55 -${tender_item_delivery_longitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-longitude  
56 -  
57 -${tender_lot_item_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .item-item-wrapper div.textvalue  
58 -${tender_lot_item_quantity_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .quantity-source  
59 -${tender_lot_item_quantity_value_type} = float  
60 -${tender_lot_item_unit_title_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .unit-title-source  
61 -${tender_lot_item_unit_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .unit-code-source  
62 -${tender_lot_item_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-scheme  
63 -${tender_lot_item_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-code  
64 -${tender_lot_item_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .main-classification-description  
65 -${tender_lot_item_additional_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-scheme  
66 -${tender_lot_item_additional_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-code  
67 -${tender_lot_item_additional_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .additional-classification-description  
68 -${tender_lot_item_delivery_region_id_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-country  
69 -${tender_lot_item_delivery_postal_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-postalcode  
70 -${tender_lot_item_delivery_locality_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-locality  
71 -${tender_lot_item_delivery_street_address_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-street-address  
72 -${tender_lot_item_delivery_start_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-start-date-source  
73 -${tender_lot_item_delivery_end_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-end-date-source  
74 -${tender_lot_item_delivery_latitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-latitude  
75 -${tender_lot_item_delivery_longitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(0) .item-info-wrapper.hidden.info-wrapper .delivery-longitude  
76 -  
77 -${tender_procurementMethodType_value_locator} = jquery=#aside-part-pjax .aside__inner .opprocurementmethodtype  
78 -${tender_complaintPeriod_endDate_value_locator} = jquery=#tender-general-info .info-row.complaint-period .end-date  
79 -${tender_qualifications_0_status_value_locator} = jquery=.pjax-container .pseudo-table__row[qualification-index="0"] .qualification-info-wrapper .status-source  
80 -${tender_qualifications_1_status_value_locator} = jquery=.pjax-container .pseudo-table__row[qualification-index="1"] .qualification-info-wrapper .status-source  
81 -  
82 -#lots  
83 -${tender_lots_0_title_value_locator} = jquery=#lots .tabs__list .tabs__item--active .tabs__tab-big-text  
84 -${tender_lots_0_description_value_locator} = jquery=#lots .tabs__content .tabs__pane--visible > span div:nth(1)  
85 -${tender_lots_title_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue:first  
86 -${tender_lots_description_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible > span div.textvalue.hidden  
87 -${tender_lots_value_amount_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
88 -${tender_lots_value_amount_value_type} = float  
89 -${tender_lots_value_currency_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
90 -${tender_lots_value_value_added_tax_included_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
91 -${tender_lots_minimal_step_amount_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .minimal-step-source.hidden  
92 -${tender_lots_minimal_step_amount_value_type} = float  
93 -${tender_lots_minimal_step_amount_currency_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
94 -${tender_lots_minimal_step_amount_value_added_tax_included_value_locator_tpl} = jquery=#lots .tabs__content .tabs__pane--visible .budget-source.hidden  
95 -  
96 -#docs and auction  
97 -${tender_new_doc_locator_tpl} = jquery=.docs__list .docs__item.js-item .doc__title:contains("%doc_id%")  
98 -${tender_new_doc_title_locator_tpl} = $('.docs__list .docs__item.js-item:contains("%doc_id%")').attr("data-title")  
99 -#${tender_new_doc_locator_tpl} = jquery=.docs__list .docs__item.js-item:first .doc__title:contains("%doc_id%")  
100 -${tender_auction_locator} = jquery=#auction-info  
101 -${tender_auction_input_locator} = $('#auction-info a[href*="https://auction-staging"]').attr("href")  
102 -${tender_auction_belowThreshold_locator} = jquery=#aside-part-pjax a[href*="https://auction-staging"]  
103 -${tender_auction_belowThreshold_input_locator} = jquery=#aside-part-pjax a[href*="https://auction-staging"]  
104 -${tender_auction_belowThreshold_value_locator} = $('#aside-part-pjax a[href*="https://auction-staging"]').attr("href")  
105 -${tender_auctionPeriod_startDate_value_locator} = jquery=#tender-general-info .auction-start-date.hidden  
106 -${tender_auctionPeriod_endDate_value_locator} = jquery=#tender-general-info .auction-end-date.hidden  
107 -${tender_lots_0_auctionPeriod_endDate_value_locator} = jquery=#tender-general-info .auction-end-date.hidden  
108 -  
109 -  
110 -#wait for status  
111 -${tender_status_active_tendering_value_locator} = xpath=//*[contains(text(), "active.tendering")]  
112 -${tender_status_active_auction_value_locator} = xpath=//*[contains(text(), "active.auction")]  
113 -${tender_status_active_pre_qualification_value_locator} = xpath=//*[contains(text(), "active.pre-qualification")]  
114 -${tender_status_complete_value_locator} = jquery=#aside-part-pjax .hidden.opstatus:contains(complete)  
115 -${tender_status_active_stage2_pending_value_locator} = xpath=//*[contains(text(), "active.stage2.pending")]  
116 -${tender_status_active_stage2_waiting_value_locator} = xpath=//*[contains(text(), "active.stage2.waiting")]  
117 -${tender_status_active_complete_value_locator} = jquery=#aside-part-pjax .hidden.opstatus:contains(complete)  
118 -${tender_status_active_qualification_value_locator} = xpath=//*[contains(text(), "active.qualification")]  
119 -  
120 -#funders  
121 -${tender_funders_0_name_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .organization_name.hidden .definitions__value  
122 -${tender_funders_0_address_countryName_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .country.hidden .definitions__value  
123 -${tender_funders_0_address_locality_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .locality.hidden .definitions__value  
124 -${tender_funders_0_address_postalCode_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .postcode.hidden .definitions__value  
125 -${tender_funders_0_address_region_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .region.hidden .definitions__value  
126 -${tender_funders_0_address_streetAddress_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .street-address.hidden .definitions__value  
127 -${tender_funders_0_identifier_id_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .identifier_id .definitions__value  
128 -${tender_funders_0_identifier_legalName_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .identifier_legal_name.hidden .definitions__value  
129 -${tender_funders_0_identifier_scheme_value_locator} = jquery=#tender-general-info .funder-organization .value .popup__inner .definitions__list .identifier_scheme.hidden .definitions__value  
130 -  
131 -#negotiation  
132 -#${tender_procuringEntity_contactPoint_name_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .contact-point-name.hidden .definitions__value  
133 -#${tender_procuringEntity_contactPoint_telephone_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .contact-point-phone.hidden .definitions__value  
134 -#${tender_procuringEntity_identifier_legalName_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .identifier_legal_name.hidden .definitions__value  
135 -#${tender_procuringEntity_identifier_scheme_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .identifier_scheme.hidden .definitions__value  
136 -${tender_procuringEntity_contactPoint_name_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.contact-point-name.hidden .definitions__value  
137 -${tender_procuringEntity_contactPoint_telephone_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.contact-point-phone.hidden .definitions__value  
138 -${tender_procuringEntity_identifier_legalName_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.identifier_legal_name.hidden .definitions__value  
139 -${tender_procuringEntity_identifier_scheme_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.identifier_scheme.hidden .definitions__value  
140 -  
141 -${tender_procuringEntity_organization_name_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.organization-name.hidden .definitions__value  
142 -${tender_procuringEntity_address_countryName_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.country.hidden .definitions__value  
143 -${tender_procuringEntity_address_locality_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.locality.hidden .definitions__value  
144 -${tender_procuringEntity_address_postalCode_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.postcode.hidden .definitions__value  
145 -${tender_procuringEntity_address_region_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.region.hidden .definitions__value  
146 -${tender_procuringEntity_address_streetAddress_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.street-address.hidden .definitions__value  
147 -${tender_procuringEntity_contactPoint_url_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.url .definitions__value  
148 -${tender_procuringEntity_identifier_id_value_locator} = jquery=#w0tooltip-content > ul > li.definitions__item.identifier_id.hidden .definitions__value  
149 -  
150 -${tender_items_1_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .description  
151 -${tender_items_1_quantity_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .quantity-source  
152 -${tender_items_1_quantity_value_type} = float  
153 -${tender_items_1_unit_title_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .unit-title-source  
154 -${tender_items_1_unit_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .unit-code-source  
155 -${tender_items_1_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .main-classification-scheme  
156 -${tender_items_1_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .main-classification-code  
157 -${tender_items_1_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .main-classification-description  
158 -${tender_items_1_additional_classification_scheme_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .additional-classification-scheme  
159 -${tender_items_1_additional_classification_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .additional-classification-code  
160 -${tender_items_1_additional_classification_description_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .additional-classification-description  
161 -${tender_items_1_delivery_country_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-country  
162 -${tender_items_1_delivery_region_id_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-region  
163 -${tender_items_1_delivery_postal_code_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-postalcode  
164 -${tender_items_1_delivery_locality_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-locality  
165 -${tender_items_1_delivery_street_address_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-street-address  
166 -${tender_items_1_delivery_start_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-start-date-source  
167 -${tender_items_1_delivery_end_date_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-end-date-source  
168 -${tender_items_1_delivery_latitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-latitude  
169 -${tender_items_1_delivery_longitude_value_locator} = jquery=.tabs__content .tabs__pane--visible .pseudo-table__row.item-item-wrapper:nth(1) .item-info-wrapper.hidden.info-wrapper .delivery-longitude  
170 -  
171 -  
172 -${tender_awards_0_suppliers_0_contactPoint_telephone_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .contact-point-phone.hidden .definitions__value  
173 -${tender_awards_0_suppliers_0_contactPoint_name_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .contact-point-name.hidden .definitions__value  
174 -${tender_awards_0_suppliers_0_contactPoint_email_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .contact-point-email.hidden .definitions__value  
175 -${tender_awards_0_suppliers_0_identifier_scheme_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .identifier_scheme.hidden .definitions__value  
176 -${tender_awards_0_suppliers_0_identifier_legalName_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .identifier_legal_name.hidden .definitions__value  
177 -${tender_awards_0_suppliers_0_address_countryName_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .country.hidden .definitions__value  
178 -${tender_awards_0_suppliers_0_address_locality_value_locator} = jquery=#bids-pjax .hint__popup_organization_info .definitions__list .locacity.hidden .definitions__value  
179 -${tender_awards_0_suppliers_0_address_postalCode_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .postcode.hidden .definitions__value  
180 -${tender_awards_0_suppliers_0_address_region_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .region.hidden .definitions__value  
181 -${tender_awards_0_suppliers_0_address_streetAddress_value_locator} = jquery=#tender-general-info .organization .value .popup__inner .definitions__list .street-address.hidden .definitions__value  
182 -  
183 -#esco  
184 -${tender_NBUdiscountRate_value_locator} = jquery=#tender-general-info .nbu-discount-rate-source.hidden  
185 -${tender_NBUdiscountRate_value_type} = float  
186 -${tender_minimalStepPercentage_value_locator} = jquery=#tender-general-info .minimal-step-percentage-source.hidden  
187 -${tender_minimalStepPercentage_value_type} = float  
188 -${tender_fundingKind_value_locator} = jquery=#tender-general-info .funding-kind-source.hidden  
189 -${tender_yearlyPaymentsPercentageRange_value_locator} = jquery=#tender-general-info .yearly-payments-percentage-range-source.hidden  
190 -${tender_yearlyPaymentsPercentageRange_value_type} = float  
191 -${tender_lots_0_minimalStepPercentage_value_locator} = jquery=#tender-general-info .minimal-step-percentage-source.hidden  
192 -${tender_lots_0_minimalStepPercentage_value_type} = float  
193 -${tender_lots_0_yearlyPaymentsPercentageRange_value_locator} = jquery=#tender-general-info .yearly-payments-percentage-range-source.hidden  
194 -${tender_lots_0_yearlyPaymentsPercentageRange_value_type} = float  
195 -  
196 -#awards  
197 -${tender_awards_0_complaintPeriod_endDate_value_locator} = jquery=#tender-general-info .complaint-period .value .end-date  
198 -${tender_awards_1_complaintPeriod_endDate_value_locator} = jquery=#tender-general-info .complaint-period .value .end-date  
199 -${tender_awards_complaintPeriod_endDate_value_locator} = jquery=.award-info-wrapper.hidden .complaint-period-end-date  
200 -${tender_awards_negotiation_complaintPeriod_endDate_value_locator} = jquery=#bids-pjax .pseudo-table__cell .end-date  
201 -#${tender_awards_complaintPeriod_endDate_value_locator} = jquery=#tender-contract-form .js-award-complaint-period-wrapper .end-date  
202 -${tender_awards_negotiation_documents_btn_locator} = jquery=[href*="/tender/view-qualification-result-documents?award"]  
203 -${tender_awards_negotiation_documents_close_btn_locator} = jquery=.modal.fade.fancybox-content .modal-footer .btn.btn-default  
204 -${tender_awards_0_documents_0_title_value_locator} = jquery=.doc__table_title a[href*="https://public-docs-staging.prozorro.gov.ua"]  
205 -${tender_awards_0_status_value_locator} = jquery=.award-info-wrapper.hidden .status-source  
206 -  
207 -#status contract  
208 -#${tender_contracts_0_status_value_locator} = jquery=#contracts-pjax .tabs__pane--visible .definitions__item--offset-big .badge__text  
209 -${tender_contracts_0_status_value_locator} = jquery=#contracts-pjax .tabs__pane--visible .status-source.hidden  
210 -${tender_contracts_status_active_value_locator} = jquery=#contracts-pjax .tabs__pane--visible .status-source.hidden:contains(active)  
211 -  
212 -${wait_msg_contract} = Завантаження контракту буде  
213 -  
214 -#framework_agreement  
215 -${tender_maxAwardsCount_value_locator} = jquery=#tender-general-info .max-award-count.hidden  
216 -${tender_maxAwardsCount_value_type} = integer  
217 -${tender_agreementDuration_value_locator} = jquery=#tender-general-info .agreement-duration  
218 -${tender_agreements_0_status_value_locator} = jquery=.tabs__pane--visible[id*="tab-agreement-contract"] .status-source.hidden  
219 -${tender_agreements_status_active_value_locator} = jquery=.tabs__pane--visible[id*="tab-agreement-contract"] .status-source.hidden:contains(active)  
220 -  
221 -${tender_agreements_0_agreementID_value_locator} = jquery=#agreement-contracts-list .agreement-info-wrapper.info-wrapper .agreement-id .value  
Please register or login to post a comment