Page MenuHomePhabricator

MobileFrontend Selenium tests do not use page object pattern
Closed, ResolvedPublic

Description

Examples:

on(ArticlePage).link_element(class: "edit-page", index: arg1.to_i).when_present.click

https://github.com/wikimedia/mediawiki-extensions-MobileFrontend/blob/master/tests/browser/features/step_definitions/editor_ve_steps.rb#L41

on(ArticlePage).overlay_element.when_present.h2_element(:text => "Nearby").should be_visible

https://github.com/wikimedia/mediawiki-extensions-MobileFrontend/blob/master/tests/browser/features/step_definitions/geonotahack_steps.rb#L10

on(ArticlePage).overlay_languages_element.when_present.button_element(class: "cancel").click

https://github.com/wikimedia/mediawiki-extensions-MobileFrontend/blob/master/tests/browser/features/step_definitions/language_steps.rb#L14

When(/^I click on "(.*?)" in the main navigation menu$/) do |text|

step 'I click on the main navigation button'
on(ArticlePage).navigation_element.link_element(text: text).click

end

Then(/^I see a link to "(.*?)" in the main navigation menu$/) do |text|

on(ArticlePage).navigation_element.link_element(text: text).should be_visible

end

Then(/^I do not see a link to "(.*?)" in the main navigation menu$/) do |text|

on(ArticlePage).navigation_element.link_element(text: text).should_not be_visible

end

https://github.com/wikimedia/mediawiki-extensions-MobileFrontend/blob/master/tests/browser/features/step_definitions/mainmenu_steps.rb#L5-L16

Then(/^I should see at least one result in the nearby items list$/) do

on(ArticlePage) do |page|
  page.page_list_element.when_present(20).should be_visible
  page.page_list_element.link_element(:css => "a.title" ).should be_visible
end

end

When(/^I click a nearby result$/) do

on(ArticlePage).page_list_element.when_present(20).link_element(:css => "a.title" ).click

end

Then(/^I see the page preview overlay$/) do

on(ArticlePage).overlay_element.when_present(20).div_element(:class => "content").should be_visible

end

https://github.com/wikimedia/mediawiki-extensions-MobileFrontend/blob/master/tests/browser/features/step_definitions/nearby_steps.rb#L7-L20


Version: wmf-deployment
Severity: normal

Details

Reference
bz63620

Event Timeline

bzimport raised the priority of this task from to Low.Nov 22 2014, 3:20 AM
bzimport set Reference to bz63620.
bzimport added a subscriber: Unknown Object (MLST).

Chris, is MobileFrontend repo now using page object pattern? Can this bug be resolved?

Is this bug still valid?
What needs to be done?

There are still a handful of steps where I see references to selectors, but many are necessary as they take variable arguments.

$ ag 'element\(' features/step_definitions/
features/step_definitions/common_steps.rb
106:  expect(on(ArticlePage).content_wrapper_element.link_element(text: text).when_present(10)).to be_visible

features/step_definitions/language_steps.rb
6:  on(ArticlePage).overlay_languages_element.when_present.button_element(class: 'cancel').click

features/step_definitions/mainmenu_steps.rb
7:  on(ArticlePage).navigation_element.link_element(text: text).when_visible.click
11:  expect(on(ArticlePage).navigation_element.link_element(text: text)).to be_visible
15:  expect(on(ArticlePage).navigation_element.link_element(text: text)).not_to be_visible
27:  expect(on(ArticlePage).navigation_element.link_element(href: /UserProfile\/#{user}/, text: user_label)).to be_visible

features/step_definitions/nearby_steps.rb
8:  on(ArticlePage).page_list_element.when_present(20).link_element(class: 'title').click
14:    expect(page.page_list_element.link_element(class: 'title')).to be_visible
19:  expect(on(ArticlePage).overlay_element.when_present(20).div_element(class: 'content')).to be_visible

features/step_definitions/toggling_steps.rb
14:  expect(on(ArticlePage).span_element(id: id).when_present(10)).to be_visible

Of these, features/step_definitions/language_steps.rb and features/step_definitions/nearby_steps.rb could be refactored further.

Jhernandez claimed this task.
Jhernandez subscribed.

Created T109464 for tracking that work. Closing this one since it seems to be done.

Thanks.