Skip to content

Commit

Permalink
Merge pull request #214 from plone/playwright-based-robot-test
Browse files Browse the repository at this point in the history
Playwright based robot test
  • Loading branch information
petschki authored Oct 18, 2024
2 parents 51793c9 + dc7dc60 commit 60f3167
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 96 deletions.
3 changes: 3 additions & 0 deletions news/3813.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Update robot framework tests to use
`robotframework-browser` (`playwright` integration on robotframework).
[gforcada]
16 changes: 16 additions & 0 deletions plone/app/discussion/tests/robot/keywords.robot
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
*** Keywords ***

I enable discussion on the document
Go To ${PLONE_URL}/my-document/edit
Get Text body contains Settings
Click .autotoc-nav >> "Settings"
Select Options By id=formfield-form-widgets-IAllowDiscussion-allow_discussion >> select text Yes
Click "Save"

I add a comment
Type Text id=form-widgets-comment-text This is a comment
Click css=button[name="form.buttons.comment"]

I can see that the comment is gone
Go To ${PLONE_URL}/my-document/view
Get Element Count css=.comment-body == 0
75 changes: 43 additions & 32 deletions plone/app/discussion/tests/robot/test_allow_discussion.robot
Original file line number Diff line number Diff line change
@@ -1,66 +1,77 @@
*** Settings *****************************************************************
*** Settings ***

Resource plone/app/robotframework/keywords.robot
Resource plone/app/robotframework/saucelabs.robot
Resource plone/app/robotframework/selenium.robot
Resource plone/app/robotframework/browser.robot
Resource keywords.robot

Library Remote ${PLONE_URL}/RobotRemote

Test Setup Run keywords Plone Test Setup
Test Teardown Run keywords Plone Test Teardown
Test Setup Run Keywords Plone test setup
Test Teardown Run keywords Plone test teardown


*** Test Cases ***************************************************************
*** Test Cases ***

Scenario: Allow comments for Link Type
Given a logged-in manager
and Globally enabled comments
and the types control panel
When I select 'Link' in types dropdown
and Allow discussion
Then Wait until page contains Content Settings
Then Wait For Condition Text //body contains Content Settings

When I add new Link 'my_link'
Then Link 'my_link' should have comments enabled
Then Link 'my_link' should have comments enabled


*** Keywords *****************************************************************
*** Keywords ***

# --- GIVEN ------------------------------------------------------------------
# GIVEN

a logged-in manager
Enable autologin as Manager
Enable autologin as Manager

the types control panel
Go to ${PLONE_URL}/@@content-controlpanel
Wait until page contains Content Settings
Go to ${PLONE_URL}/@@content-controlpanel
Wait For Condition Text //body contains Content Settings

Globally enabled comments
Go to ${PLONE_URL}/@@discussion-settings
Wait until page contains Discussion settings
Select checkbox name=form.widgets.globally_enabled:list
Click button Save

Go to ${PLONE_URL}/@@discussion-settings
Wait For Condition Text //body contains Discussion settings
Check Checkbox //input[@name="form.widgets.globally_enabled:list"]
Click //button[@name="form.buttons.save"]


# --- WHEN -------------------------------------------------------------------
# WHEN

I select '${content_type}' in types dropdown
Select from list by label name=type_id ${content_type}
Wait until page contains Globally addable
Select Options By //select[@name="type_id"] label ${content_type}
Wait For Condition Text //body contains Globally addable

Allow discussion
Select checkbox name=allow_discussion:boolean
Click Button Save
Check Checkbox //input[@name="allow_discussion:boolean"]
Click //button[@name="form.button.Save"]

I add new Link '${id}'
Go to ${PLONE_URL}
Wait until page contains Plone site
Create content type=Link id=${id} title=${id} remoteUrl=http://www.starzel.de
Go to ${PLONE_URL}
Wait For Condition Text //body contains Plone site
Create content
... type=Link
... id=${id}
... title=${id}
... remoteUrl=http://www.starzel.de


# --- THEN -------------------------------------------------------------------
# THEN

Link '${id}' should have comments enabled
Go to ${PLONE_URL}/${id}
Wait until page contains ${id}
Page should contain element xpath=//div[@id="commenting"]
Go to ${PLONE_URL}/${id}
Wait For Condition Text //body contains ${id}
Get Element Count //div[@id="commenting"] should be 1

# Misc

Pause
[Documentation] Visually pause test execution with interactive dialog by
... importing **Dialogs**-library and calling its
... **Pause Execution**-keyword.
Import library Dialogs
Pause execution
51 changes: 22 additions & 29 deletions plone/app/discussion/tests/robot/test_discussion.robot
Original file line number Diff line number Diff line change
@@ -1,23 +1,13 @@
# ============================================================================
# Test basic discussion features (adding, replying, deleting)
# ============================================================================
#
# $ bin/robot-server plone.app.discussion.testing.PLONE_APP_DISCUSSION_ROBOT_TESTING
# $ bin/robot src/plone.app.discussion/src/plone/app/discussion/tests/robot/test_discussion.robot
#
# ============================================================================

*** Settings ***

Resource plone/app/robotframework/saucelabs.robot
Resource plone/app/robotframework/selenium.robot
Resource plone/app/robotframework/browser.robot
Resource keywords.robot

Library Remote ${PLONE_URL}/RobotRemote

Test Setup Run Keywords Plone test setup
Test Teardown Run keywords Plone test teardown


*** Test Cases ***

Enable Discussion on a Document
Expand All @@ -35,11 +25,16 @@ Add Comment to a Document
Reply to a comment on a Document
Given a logged-in Site Administrator
and a document with discussion enabled
and I add a comment
When I reply to a comment
Then I can see the reply

Delete Comment from a Document
Given a logged-in Site Administrator
and a document with discussion enabled

and I add a comment
When I delete the comment
Then I can see that the comment is gone

*** Keywords ***

Expand All @@ -58,28 +53,26 @@ a document with discussion enabled

# When

I enable discussion on the document
Go To ${PLONE_URL}/my-document/edit
Wait until page contains Settings
Click Link Settings
Wait until element is visible name=form.widgets.IAllowDiscussion.allow_discussion:list
Select From List By Value name=form.widgets.IAllowDiscussion.allow_discussion:list True
Click Button Save

I add a comment
Wait until page contains element id=form-widgets-comment-text
Input Text id=form-widgets-comment-text This is a comment
Click Button Comment
I reply to a comment
Click "Reply"
Fill Text css=div[id^=formfield-form-widgets-new] > textarea My reply text
Click css=.discussion button[name="form.buttons.comment"]

I delete the comment
Click css=button[name="form.button.DeleteComment"]

# Then

I can see a comment form on the document
Go To ${PLONE_URL}/my-document/view
Wait until page contains My Document
Page should contain Add comment
Page should contain element id=form-widgets-comment-text
Get Text h1 == My Document
Get Text legend == Add comment
Get Element id=form-widgets-comment-text

I can see the comment below the document
Go To ${PLONE_URL}/my-document/view
Page should contain This is a comment
Get Text css=.comment-body > p == This is a comment

I can see the reply
Go To ${PLONE_URL}/my-document/view
Get Text css=.level-1 .comment-body > p == My reply text
49 changes: 14 additions & 35 deletions plone/app/discussion/tests/robot/test_moderation.robot
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
*** Settings ***

Resource plone/app/robotframework/saucelabs.robot
Resource plone/app/robotframework/selenium.robot
Resource plone/app/robotframework/browser.robot
Resource keywords.robot

Library Remote ${PLONE_URL}/RobotRemote

Expand All @@ -16,7 +16,7 @@ Add a Comment to a Document and bulk delete it
and workflow multiple enabled
and a document with discussion enabled
When I add a comment and delete it
Then I can not see the comment below the document
Then I can see that the comment is gone

Last history entry is shown
Given a logged-in Site Administrator
Expand Down Expand Up @@ -49,49 +49,28 @@ a document with discussion enabled

# When

I enable discussion on the document
Go To ${PLONE_URL}/my-document/edit
Wait until page contains Settings
Click Link Settings
Wait until element is visible name=form.widgets.IAllowDiscussion.allow_discussion:list
Select From List By Value name=form.widgets.IAllowDiscussion.allow_discussion:list True
Click Button Save

I add a comment
Wait until page contains element id=form-widgets-comment-text
Input Text id=form-widgets-comment-text This is a comment
Click Button Comment

I add a comment and delete it
Wait until page contains element id=form-widgets-comment-text
Input Text id=form-widgets-comment-text This is a comment
Click Button Comment
Fill Text id=form-widgets-comment-text This is a comment
Click css=button[name="form.buttons.comment"]
Go To ${PLONE_URL}/@@moderate-comments?review_state=all
Wait Until Element Is Visible css=option[value=delete]
Wait Until Keyword Succeeds 5x 1s Select And Check xpath://select[@name='form.select.BulkAction'] delete
Wait Until Element Is Visible css=[name=check_all]
Wait Until Element Is Enabled css=[name=check_all]
Wait Until Element Is Visible css=[name="paths:list"]
Wait Until Element Is Enabled css=[name="paths:list"]
Wait for Condition return jQuery._data( jQuery('[name=check_all]')[0], "events" )?.click?.length == 2
Select Checkbox name=check_all
Wait Until Element Is Visible css=[name="paths:list"]:checked
Wait For Then Click Element css=button[name="form.button.BulkAction"]
Wait Until Page Does Not Contain This is a comment
Get Text body contains Bulk Actions
Select Options By select[name="form.select.BulkAction"] text Delete
Check Checkbox input[name="check_all"]
Click "Apply"
Get Element Count table > tbody > tr == 0.0

workflow multiple enabled
Go To ${PLONE_URL}/@@content-controlpanel?type_id=Discussion%20Item&new_workflow=comment_review_workflow
Execute Javascript window.scroll(0, 2000)
Click Button Save
Click "Save"

# Then

I can not see the comment below the document
Go To ${PLONE_URL}/my-document/view
Wait until page contains My Document
Get Text body contains My Document
Page should not contain This is a comment

I can see the last history entry in moderation view
Go To ${PLONE_URL}/@@moderate-comments?review_state=all
Wait until page contains element name=form.select.BulkAction
Page should contain Create
Get Text body contains Bulk Actions
Get Text table contains Create

0 comments on commit 60f3167

Please sign in to comment.