Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy_test.selenium.test_pages

from galaxy_test.base.workflow_fixtures import (
    WORKFLOW_WITH_BAD_COLUMN_PARAMETER,
    WORKFLOW_WITH_OLD_TOOL_VERSION,
)
from .framework import (
    managed_history,
    retry_assertion_during_transitions,
    selenium_test,
    SeleniumTestCase,
)


[docs] class TestPages(SeleniumTestCase): ensure_registered = True
[docs] @selenium_test @managed_history def test_simple_page_creation_edit_and_view(self): # Upload a file to test embedded object stuff test_path = self.get_filename("1.fasta") self.perform_upload(test_path) self.history_panel_wait_for_hid_ok(1) self.navigate_to_pages() self.screenshot("pages_grid") page_name = self.create_page_and_edit(screenshot_name="pages_create_form") self.screenshot("pages_editor_new") editor = self._page_editor editor.markdown_editor.wait_for_and_send_keys("moo\n\n\ncow\n\n") editor.embed_dataset.wait_for_and_click() self.screenshot("pages_editor_embed_dataset_dialog") editor.dataset_selector.wait_for_and_click() self.sleep_for(self.wait_types.UX_RENDER) editor.save.wait_for_and_click() self.screenshot("pages_editor_saved") self.page_open_and_screenshot(page_name, "page_view_with_embedded_dataset")
[docs] @selenium_test @managed_history def test_workflow_problem_display(self): workflow_populator = self.workflow_populator problem_workflow_1_id = workflow_populator.upload_yaml_workflow( WORKFLOW_WITH_OLD_TOOL_VERSION, exact_tools=True ) problem_workflow_2_id = workflow_populator.upload_yaml_workflow( WORKFLOW_WITH_BAD_COLUMN_PARAMETER, exact_tools=True ) self.navigate_to_pages() page_name = self.create_page_and_edit() editor = self._page_editor editor.markdown_editor.wait_for_and_send_keys("moo\n\n\ncow\n\n") editor.embed_workflow_display.wait_for_and_click() self.screenshot("pages_editor_embed_workflow_dialog") editor.workflow_selection(id=problem_workflow_1_id).wait_for_and_click() self.sleep_for(self.wait_types.UX_RENDER) editor.embed_workflow_display.wait_for_and_click() editor.workflow_selection(id=problem_workflow_2_id).wait_for_and_click() self.sleep_for(self.wait_types.UX_RENDER) editor.save.wait_for_and_click() self.page_open_and_screenshot(page_name, "page_view_with_workflow_problems")
@property def _page_editor(self): return self.components.pages.editor # --- Standalone page unified editor tests ---
[docs] @selenium_test @managed_history def test_standalone_page_unified_editor_round_trip(self): """Core round-trip: edit regular page through PageEditorView, save, reload.""" slug = self._get_random_name(prefix="roundtrip") page = self.dataset_populator.new_page(slug=slug, content_format="markdown", content="# Starter") self.navigate_to_page_editor(page["id"]) self.components.pages.history.toolbar.wait_for_visible() editor = self.components.pages.history.markdown_editor assert "Starter" in editor.wait_for_value() self.history_page_editor_set_content("# Full Round Trip\n\nContent from unified editor.") self.components.pages.history.unsaved_indicator.wait_for_visible() self.history_page_save() self.components.pages.history.unsaved_indicator.assert_absent_or_hidden_after_transitions() self.home() self.navigate_to_page_editor(page["id"]) assert "Full Round Trip" in editor.wait_for_value() self.screenshot("standalone_page_round_trip")
[docs] @selenium_test @managed_history def test_standalone_page_revisions(self): """Revisions: UI saves increase count, restore restores oldest content.""" slug = self._get_random_name(prefix="revisions") page = self.dataset_populator.new_page(slug=slug, content_format="markdown", content="# Initial") self.navigate_to_page_editor(page["id"]) self.history_page_editor_set_content("# Save 1") self.history_page_save() self.history_page_editor_set_content("# Save 2") self.history_page_save() self.history_page_open_revisions() self.history_page_assert_revision_count(3) # initial + 2 saves # Click restore on oldest revision (last in list) restore_buttons = self.components.pages.history.restore_revision_button.all() restore_buttons[-1].click() editor = self.components.pages.history.markdown_editor @retry_assertion_during_transitions def assert_restored(): assert "Initial" in editor.wait_for_value() assert_restored() self.screenshot("standalone_page_revision_restore")
[docs] @selenium_test @managed_history def test_standalone_page_back_button_returns_to_grid(self): """Back button navigates from editor to pages grid.""" slug = self._get_random_name(prefix="backbtn") page = self.dataset_populator.new_page(slug=slug, content_format="markdown", content="# Back Test") self.navigate_to_page_editor(page["id"]) self.components.pages.history.toolbar.wait_for_visible() self.components.pages.history.back_button.wait_for_and_click() self.sleep_for(self.wait_types.UX_TRANSITION) # Should be on the pages grid self.components.pages.activity.wait_for_visible() self.screenshot("standalone_page_back_to_grid")
[docs] @selenium_test @managed_history def test_standalone_page_revision_diff(self): """Two diff modes on standalone page: compare to previous and compare to current.""" slug = self._get_random_name(prefix="diff") page = self.dataset_populator.new_page(slug=slug, content_format="markdown", content="# Start\n\nAlpha") self.dataset_populator.update_history_page(page["id"], content="# Start\n\nBeta") self.navigate_to_page_editor(page["id"]) self.history_page_open_revisions() self.history_page_assert_revision_count(2) # Click newest revision items = self.components.pages.history.revision_item.all() items[0].click() self.components.pages.history.revision_view.wait_for_visible() # Newest: "Compare to Current" hidden, "Compare to Previous" visible self.components.pages.history.revision_compare_current_button.assert_absent_or_hidden() self.components.pages.history.revision_compare_previous_button.wait_for_visible() # Click "Compare to Previous" self.components.pages.history.revision_compare_previous_button.wait_for_and_click() self.components.pages.history.revision_diff_view.wait_for_visible() diff_text = self.components.pages.history.revision_diff_view.wait_for_visible().text assert "Beta" in diff_text or "Alpha" in diff_text # Go back, click oldest revision self.history_page_open_revisions() items = self.components.pages.history.revision_item.all() items[-1].click() self.components.pages.history.revision_view.wait_for_visible() # Oldest: "Compare to Previous" hidden, "Compare to Current" visible self.components.pages.history.revision_compare_previous_button.assert_absent_or_hidden() self.components.pages.history.revision_compare_current_button.wait_for_visible() # Click "Compare to Current" self.components.pages.history.revision_compare_current_button.wait_for_and_click() self.components.pages.history.revision_diff_view.wait_for_visible() self.screenshot("standalone_page_revision_diff")
[docs] @selenium_test @managed_history def test_standalone_toolbar_shows_permissions_not_history_controls(self): """Standalone editor shows correct toolbar: permissions, save-view, no history text.""" slug = self._get_random_name(prefix="toolbar") page = self.dataset_populator.new_page(slug=slug, content_format="markdown", content="# Toolbar Test") self.navigate_to_page_editor(page["id"]) self.components.pages.history.toolbar.wait_for_visible() # Standalone controls visible self.components.pages.history.save_button.wait_for_visible() self.components.pages.history.revisions_button.wait_for_visible() self.components.pages.history.preview_button.wait_for_visible() self.components.pages.history.permissions_button.wait_for_visible() # Back button says "Back to Reports" not "This History's Notebooks" back_text = self.components.pages.history.back_button.wait_for_text() assert "Back to Reports" in back_text assert "This History's Notebooks" not in back_text self.screenshot("standalone_toolbar_controls")