Skip to content

Commit d85d9d1

Browse files
committed
DAPT-26 : include logic to measure post browser metric execution
1 parent c9faf83 commit d85d9d1

File tree

2 files changed

+91
-89
lines changed

2 files changed

+91
-89
lines changed

app/selenium_ui/confluence/modules.py

Lines changed: 78 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import random
2-
from selenium_ui.conftest import print_timing, measure_timing, measure_browser_navi_metrics, measure_dom_requests, measure_with_browser_metrics
2+
from selenium_ui.conftest import print_timing, measure_timing, measure_dom_requests, measure_with_browser_metrics
33

44
from selenium_ui.confluence.pages.pages import Login, AllUpdates, PopupManager, Page, Dashboard, TopNavPanel, Editor, \
55
Logout
@@ -57,45 +57,45 @@ def login(webdriver, datasets):
5757
login_page = Login(webdriver)
5858
webdriver.debug_info = generate_debug_session_info(webdriver, datasets)
5959

60-
@print_timing("selenium_login")
61-
def measure():
6260

63-
def sub_measure():
61+
def measure():
62+
login_page.go_to()
63+
if login_page.is_logged_in():
64+
login_page.delete_all_cookies()
6465
login_page.go_to()
65-
if login_page.is_logged_in():
66-
login_page.delete_all_cookies()
67-
login_page.go_to()
68-
login_page.wait_for_page_loaded()
69-
node_id = login_page.get_node_id()
70-
node_ip = rest_client.get_node_ip(node_id)
71-
webdriver.node_ip = node_ip
72-
print(f"node_id:{node_id}, node_ip: {webdriver.node_ip}")
73-
measure_dom_requests(webdriver, interaction="selenium_login:open_login_page")
74-
75-
sub_measure()
66+
login_page.wait_for_page_loaded()
67+
node_id = login_page.get_node_id()
68+
node_ip = rest_client.get_node_ip(node_id)
69+
webdriver.node_ip = node_ip
70+
print(f"node_id:{node_id}, node_ip: {webdriver.node_ip}")
71+
measure_dom_requests(webdriver, interaction="selenium_login:open_login_page")
7672

7773
login_page.set_credentials(username=datasets['current_session']['username'],
7874
password=datasets['current_session']['password'])
7975

80-
def sub_measure():
81-
login_page.click_login_button()
82-
all_updates_page = AllUpdates(webdriver)
83-
all_updates_page.wait_for_page_loaded()
84-
if login_page.is_first_login():
85-
login_page.first_user_setup()
86-
all_updates_page.wait_for_page_loaded()
87-
measure_dom_requests(webdriver, interaction="selenium_login:login_and_view_dashboard")
88-
if CONFLUENCE_SETTINGS.extended_metrics:
89-
measure_browser_navi_metrics(webdriver, datasets, expected_metrics=browser_metrics['selenium_login'])
76+
login_page.click_login_button()
77+
all_updates_page = AllUpdates(webdriver)
78+
all_updates_page.wait_for_page_loaded()
79+
if login_page.is_first_login():
80+
login_page.first_user_setup()
81+
all_updates_page.wait_for_page_loaded()
82+
measure_dom_requests(webdriver, interaction="selenium_login:login_and_view_dashboard")
9083

91-
sub_measure()
84+
85+
def post_metric_measure():
9286
current_session_response = login_page.rest_api_get(url=f'{CONFLUENCE_SETTINGS.server_url}'
9387
f'/rest/api/user/current')
9488
if 'username' in current_session_response:
9589
actual_username = current_session_response['username']
9690
assert actual_username == datasets['current_session']['username']
9791

98-
measure()
92+
measure_with_browser_metrics(
93+
"selenium_login",
94+
webdriver,
95+
datasets,
96+
measure,
97+
post_metric_measure
98+
)
9999
PopupManager(webdriver).dismiss_default_popup()
100100

101101

@@ -179,34 +179,33 @@ def create_confluence_page(webdriver, datasets):
179179
nav_panel = TopNavPanel(webdriver)
180180
create_page = Editor(webdriver)
181181

182-
@print_timing("selenium_create_page")
183182
def measure():
184-
def sub_measure():
185-
PopupManager(webdriver).dismiss_default_popup()
186-
nav_panel.click_create()
187-
PopupManager(webdriver).dismiss_default_popup()
188-
create_page.wait_for_create_page_open()
189-
measure_dom_requests(webdriver, interaction="selenium_create_page:open_create_page_editor")
190-
if CONFLUENCE_SETTINGS.extended_metrics:
191-
measure_browser_navi_metrics(webdriver, datasets,
192-
expected_metrics=browser_metrics['selenium_create_page'])
183+
PopupManager(webdriver).dismiss_default_popup()
184+
nav_panel.click_create()
185+
PopupManager(webdriver).dismiss_default_popup()
186+
create_page.wait_for_create_page_open()
187+
measure_dom_requests(webdriver, interaction="selenium_create_page:open_create_page_editor")
193188

194-
sub_measure()
195189

190+
def post_metric_measure():
196191
PopupManager(webdriver).dismiss_default_popup()
197192

198193
create_page.write_title()
199194
create_page.write_content()
200195

201-
def sub_measure():
202-
create_page.click_submit()
203-
page = Page(webdriver)
204-
page.wait_for_page_loaded()
205-
measure_dom_requests(webdriver, interaction="selenium_create_page:save_created_page")
196+
create_page.click_submit()
197+
page = Page(webdriver)
198+
page.wait_for_page_loaded()
199+
measure_dom_requests(webdriver, interaction="selenium_create_page:save_created_page")
206200

207-
sub_measure()
208201

209-
measure()
202+
measure_with_browser_metrics(
203+
"selenium_create_page",
204+
webdriver,
205+
datasets,
206+
measure,
207+
post_metric_measure
208+
)
210209

211210

212211
def edit_confluence_page_by_url(webdriver, datasets):
@@ -216,29 +215,26 @@ def edit_confluence_page_by_url(webdriver, datasets):
216215
datasets['current_session']['edit_page'] = random_page
217216
edit_page = Editor(webdriver, page_id=page_id)
218217

219-
@print_timing("selenium_edit_page_by_url")
220218
def measure():
221-
def sub_measure():
222-
edit_page.go_to()
223-
edit_page.wait_for_page_loaded()
224-
measure_dom_requests(webdriver, interaction=f"selenium_edit_page_by_url:open_create_page_editor",
225-
description=page_description)
226-
if CONFLUENCE_SETTINGS.extended_metrics:
227-
measure_browser_navi_metrics(webdriver, datasets,
228-
expected_metrics=browser_metrics['selenium_edit_page_by_url'])
229-
230-
sub_measure()
219+
edit_page.go_to()
220+
edit_page.wait_for_page_loaded()
221+
measure_dom_requests(webdriver, interaction=f"selenium_edit_page_by_url:open_create_page_editor",
222+
description=page_description)
231223

224+
def post_metric_measure():
232225
edit_page.write_content()
233226

234-
def sub_measure():
235-
edit_page.save_edited_page()
236-
measure_dom_requests(webdriver, interaction=f"selenium_edit_page_by_url:save_edited_page",
237-
description=page_description)
227+
edit_page.save_edited_page()
228+
measure_dom_requests(webdriver, interaction=f"selenium_edit_page_by_url:save_edited_page",
229+
description=page_description)
238230

239-
sub_measure()
240-
241-
measure()
231+
measure_with_browser_metrics(
232+
"selenium_edit_page_by_url",
233+
webdriver,
234+
datasets,
235+
measure,
236+
post_metric_measure
237+
)
242238

243239

244240
def edit_confluence_page_quick_edit(webdriver, datasets):
@@ -250,32 +246,29 @@ def edit_confluence_page_quick_edit(webdriver, datasets):
250246

251247
@print_timing("selenium_quick_edit_page_click")
252248
def measure():
253-
def sub_measure():
254-
page.go_to()
255-
page.wait_for_resources_loaded()
256-
page.wait_for_page_loaded()
257-
PopupManager(webdriver).dismiss_default_popup()
258-
page.click_edit()
259-
edit_page.wait_for_page_loaded()
260-
measure_dom_requests(webdriver, interaction=f"selenium_quick_edit_page_click:open_create_page_editor",
261-
description=page_description)
262-
if CONFLUENCE_SETTINGS.extended_metrics:
263-
measure_browser_navi_metrics(webdriver, datasets,
264-
expected_metrics=browser_metrics['selenium_quick_edit_page_click'])
265-
266-
sub_measure()
249+
page.go_to()
250+
page.wait_for_resources_loaded()
251+
page.wait_for_page_loaded()
252+
PopupManager(webdriver).dismiss_default_popup()
253+
page.click_edit()
254+
edit_page.wait_for_page_loaded()
255+
measure_dom_requests(webdriver, interaction=f"selenium_quick_edit_page_click:open_create_page_editor",
256+
description=page_description)
267257

258+
def post_metric_measure():
268259
edit_page.write_content()
269260

270-
def sub_measure():
271-
edit_page.save_edited_page()
272-
measure_dom_requests(webdriver, interaction=f"selenium_quick_edit_page_click:save_edited_page",
273-
description=page_description)
274-
275-
sub_measure()
276-
277-
measure()
261+
edit_page.save_edited_page()
262+
measure_dom_requests(webdriver, interaction=f"selenium_quick_edit_page_click:save_edited_page",
263+
description=page_description)
278264

265+
measure_with_browser_metrics(
266+
"selenium_quick_edit_page_click",
267+
webdriver,
268+
datasets,
269+
measure,
270+
post_metric_measure
271+
)
279272

280273
def create_inline_comment(webdriver, datasets):
281274
page = random.choice(datasets[PAGES])

app/selenium_ui/conftest.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,9 @@ def wrapper(*args, **kwargs):
150150
return wrapper
151151

152152

153-
def measure_with_browser_metrics(interaction_name, webdriver, datasets, measure_func):
153+
def measure_with_browser_metrics(interaction_name, webdriver, datasets, measure_func, post_metric_measure_func=None):
154154
"""
155-
Helper function that combines measure_timing + ready_for_user_timing.
155+
Helper function that combines timing for measure_func + post_metric_measure_func + ready_for_user_timing.
156156
"""
157157
# Step 1: Measure core operations
158158
@measure_timing
@@ -168,11 +168,20 @@ def measure1():
168168
webdriver, datasets, expected_metrics=browser_metrics[interaction_name]
169169
)
170170

171-
# Step 3: Calculate combined timing
171+
# Step 3: Measure post_metric_measure_func (included in total timing)
172+
if post_metric_measure_func is not None:
173+
@measure_timing
174+
def measure_post():
175+
post_metric_measure_func()
176+
177+
post_timing = measure_post()
178+
timing = timing + post_timing
179+
180+
# Step 4: Calculate combined timing (core + post + ready_for_user)
172181
if ready_for_user_timing is not None:
173182
timing = timing + (int(ready_for_user_timing) / 1000)
174183

175-
# Step 4: Record combined timing using print_timing with explicit_timing
184+
# Step 5: Record combined timing using print_timing with explicit_timing
176185
@print_timing(interaction_name, explicit_timing=timing)
177186
def record_result():
178187
pass

0 commit comments

Comments
 (0)