discourse/spec/system/page_objects/components/composer_image_grid.rb
Sam dc21ce016a
FEATURE: carousel mode for image grid (#36825)
New syntax and editor for carousel both in rich text editor and markdown:

[grid mode=carousel]
...
...
[/grid] 

Will display a carousel vs a masonry grid of images

---------

Co-authored-by: chapoi <101828855+chapoi@users.noreply.github.com>
Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2026-01-07 11:48:15 +11:00

73 lines
2.3 KiB
Ruby
Vendored

# frozen_string_literal: true
module PageObjects
module Components
class ComposerImageGrid < PageObjects::Components::Base
def initialize(rich_editor)
@rich_editor = rich_editor
end
def add_image_to_grid
page.find(".composer-image-toolbar__add-to-grid").click
self
end
def move_image_outside_grid
page.find(".composer-image-toolbar__move-outside-grid").click
self
end
def select_first_grid_image
@rich_editor.all(".composer-image-grid .composer-image-node img").first.click
self
end
def has_add_to_grid_toolbar?
page.has_css?("[data-identifier='composer-image-toolbar']") &&
page.has_css?(".composer-image-toolbar__add-to-grid") &&
page.has_no_css?(".composer-image-toolbar__move-outside-grid")
end
def has_move_outside_grid_toolbar?
page.has_css?("[data-identifier='composer-image-toolbar']") &&
page.has_css?(".composer-image-toolbar__move-outside-grid") &&
page.has_no_css?(".composer-image-toolbar__add-to-grid")
end
def has_images?(count)
@rich_editor.has_css?(".composer-image-node img", count: count)
end
def has_grid_images?(count)
@rich_editor.has_css?(".composer-image-grid .composer-image-node img", count: count)
end
def has_no_grid_images?
@rich_editor.has_no_css?(".composer-image-grid .composer-image-node img")
end
def has_single_grid_with_images?(count)
@rich_editor.has_css?(".composer-image-grid", count: 1) &&
@rich_editor.has_css?(".composer-image-grid .composer-image-node img", count: count) &&
@rich_editor.has_no_css?(".composer-image-grid .composer-image-grid")
end
def has_mode_select?
@rich_editor.has_css?(".composer-image-gallery__mode-buttons")
end
def select_mode(mode)
@rich_editor.find(".composer-image-gallery__mode-btn[data-mode='#{mode.downcase}']").click
self
end
def has_selected_mode?(value)
@rich_editor.has_css?(".composer-image-gallery__mode-btn[data-mode='#{value}'].is-active")
end
def mode_value
@rich_editor.find(".composer-image-gallery")["data-mode"]
end
end
end
end