diff --git a/last_commit.txt b/last_commit.txt index ecd0d85d7d..aa189a1382 100644 --- a/last_commit.txt +++ b/last_commit.txt @@ -1,40 +1,144 @@ -Repository: plone.app.widgets +Repository: plone.app.event Branch: refs/heads/master -Date: 2024-10-18T09:01:33+02:00 +Date: 2024-09-11T08:21:44+02:00 Author: 1letter (1letter) <1letter@gmx.de> -Commit: https://github.com/plone/plone.app.widgets/commit/b3cc037a6e33d7b04f0e5c7df7b8648557ddfded +Commit: https://github.com/plone/plone.app.event/commit/70f9e138040f99d05b93515214591a325dc997ac -deactivate robot tests +activate robot tests Files changed: -A news/224.tests -A plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot -A plone/app/widgets/tests/robot/deactivate_test_select_widget.robot -D plone/app/widgets/tests/robot/test_querystring_widget.robot -D plone/app/widgets/tests/robot/test_select_widget.robot +A plone/app/event/tests/test_robot.py +D plone/app/event/tests/INACTIVE_test_robot.py -b'diff --git a/news/224.tests b/news/224.tests\nnew file mode 100644\nindex 00000000..fbab5550\n--- /dev/null\n+++ b/news/224.tests\n@@ -0,0 +1 @@\n+deactivate robot tests in this package and move the tests to Products.CMFPlone @1letter\n\\ No newline at end of file\ndiff --git a/plone/app/widgets/tests/robot/test_querystring_widget.robot b/plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot\nsimilarity index 100%\nrename from plone/app/widgets/tests/robot/test_querystring_widget.robot\nrename to plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot\ndiff --git a/plone/app/widgets/tests/robot/test_select_widget.robot b/plone/app/widgets/tests/robot/deactivate_test_select_widget.robot\nsimilarity index 100%\nrename from plone/app/widgets/tests/robot/test_select_widget.robot\nrename to plone/app/widgets/tests/robot/deactivate_test_select_widget.robot\n' +b'diff --git a/plone/app/event/tests/INACTIVE_test_robot.py b/plone/app/event/tests/test_robot.py\nsimilarity index 97%\nrename from plone/app/event/tests/INACTIVE_test_robot.py\nrename to plone/app/event/tests/test_robot.py\nindex 83e5c391..223699c4 100644\n--- a/plone/app/event/tests/INACTIVE_test_robot.py\n+++ b/plone/app/event/tests/test_robot.py\n@@ -1,4 +1,3 @@\n-# -*- conding: utf-8 -*-\n from plone.app.event.testing import PAEventDX_ROBOT_TESTING\n from plone.app.testing import ROBOT_TEST_LEVEL\n from plone.testing import layered\n' -Repository: plone.app.widgets +Repository: plone.app.event Branch: refs/heads/master -Date: 2024-10-18T09:05:27+02:00 +Date: 2024-09-11T08:25:13+02:00 +Author: 1letter (1letter) <1letter@gmx.de> +Commit: https://github.com/plone/plone.app.event/commit/5384f692a0e7dcb0ee87345d38b790b5305e28ac + +port robot test to browser library + +Files changed: +M plone/app/event/tests/robot/test_event_roundtrip.robot +M plone/app/event/tests/robot/variables.py + +b'diff --git a/plone/app/event/tests/robot/test_event_roundtrip.robot b/plone/app/event/tests/robot/test_event_roundtrip.robot\nindex 884a4cb9..e41e281c 100644\n--- a/plone/app/event/tests/robot/test_event_roundtrip.robot\n+++ b/plone/app/event/tests/robot/test_event_roundtrip.robot\n@@ -1,49 +1,44 @@\n *** Settings ***\n \n-Resource plone/app/robotframework/selenium.robot\n-Resource plone/app/robotframework/keywords.robot\n+Resource plone/app/robotframework/browser.robot\n \n Library Remote ${PLONE_URL}/RobotRemote\n \n-Test Setup Open test browser\n-Test Teardown Close all browsers\n+Test Setup Run Keywords Plone test setup\n+Test Teardown Run keywords Plone test teardown\n \n Variables plone/app/event/tests/robot/variables.py\n \n \n-*** Variables ***\n-\n-\n-*** Test Cases ***\n+*** Test cases ***\n \n Scenario: Create and view an event\n- Given a site owner\n- and an event add form\n- Debug\n- When I select a date in calendar overlay\n- Then it should be filled in the form\n+ Given a site owner\n+ and an event add form\n+ When I select a date in calendar overlay\n+ Then it should be filled in the form\n \n- When I click on Recurrence Add\n- Then I should see the recurrence overlay\n+ When I click on Recurrence Add\n+ Then I should see the recurrence overlay\n \n- When I select weekly repeat\n- Then I should see the recurrence overlay in weeekly repeat mode\n+ When I select weekly repeat\n+ Then I should see the recurrence overlay in weeekly repeat mode\n \n- When I fill 3 occurrences\n- Then I should see 3 occurrences in the overlay\n+ When I fill 3 occurrences\n+ Then I should see 3 occurrences in the overlay\n \n- When I click save in the overlay\n- Then the overlay should be closed\n- And I should see 3 occurrences in the form\n+ When I click save in the overlay\n+ Then the overlay should be closed\n+ and I should see 3 occurrences in the form\n \n- When I click save in the form\n- Then I should see the event detail view\n+ When I click save in the form\n+ Then I should see the event detail view\n \n- When I open an event occurrence\n- Then I should see the occurrence detail view\n+ When I open an event occurrence\n+ Then I should see the occurrence detail view\n \n- When I open the event listing\n- Then I should see the event listing view\n+ When I open the event listing\n+ Then I should see the event listing view\n \n \n *** Keywords ***\n@@ -55,111 +50,119 @@ a site owner\n \n an event add form\n Go to ${PLONE_URL}/++add++Event\n- Wait until page contains Add Event\n- Input text name=form.widgets.IDublinCore.title Testevent\n- Input text id=form-widgets-IDublinCore-description Test description\n- Input text id=form-widgets-IEventLocation-location Test location\n- Input text id=form-widgets-IEventAttendees-attendees Test attendee\n- Input text id=form-widgets-IEventContact-contact_name Test name\n- Input text id=form-widgets-IEventContact-contact_email test@email.com\n- Input text id=form-widgets-IEventContact-contact_phone +1234567890\n- Input text id=form-widgets-IEventContact-event_url http://test.url\n+ Type text //input[@name="form.widgets.IDublinCore.title"] Testevent\n+ Type text //textarea[@id="form-widgets-IDublinCore-description"] Test description\n+ Type text //input[@id="form-widgets-IEventLocation-location"] Test location\n+ Type text //textarea[@id="form-widgets-IEventAttendees-attendees"] Test attendee\n+ Type text //input[@id="form-widgets-IEventContact-contact_name"] Test name\n+ Type text //input[@id="form-widgets-IEventContact-contact_email"] test@email.com\n+ Type text //input[@id="form-widgets-IEventContact-contact_phone"] +1234567890\n+ Type text //input[@id="form-widgets-IEventContact-event_url"] http://test.url\n \n # When\n \n I select a date in calendar overlay\n- Click Element xpath=//div[@data-fieldname="form.widgets.IEventBasic.start"]//input[contains(@class,"pattern-pickadate-date")]\n- Wait until page contains Sat\n-# For Javascript: Month 1 = February.\n- Select from list by label css=div[data-fieldname="form.widgets.IEventBasic.start"] .picker__select--month ${EVENT_START_MONTHNAME}\n- Select from list by label css=div[data-fieldname="form.widgets.IEventBasic.start"] select.picker__select--year ${EVENT_START_YEAR}\n- Click Element xpath=//div[@data-fieldname="form.widgets.IEventBasic.start"]//div[contains(@class, \'picker__day\')][contains(text(), "${EVENT_START_DAY}")]\n-# Select Times\n- Click Element xpath=//div[@data-fieldname="form.widgets.IEventBasic.start"]//input[contains(@class,"pattern-pickadate-time")]\n- Click Element xpath=//div[@data-fieldname="form.widgets.IEventBasic.start"]//div[contains(@class, \'picker--time\')]//li[contains(@class, \'picker__list-item\')][contains(text(), "${EVENT_START_HOUR}:00")]\n+ # we can\'t set safely the date in the test via native browser ui "date input" element\n+ # reason 1: different ui\'s, depending on language of system browser\n+ # 12 hours format with meridiem input (AM/PM) vs. 24 hours format\n+ # reason 2: shadow root (user-agent) can\'t access via css or xpath selectors\n+ #\n+ # temporarily solution: set value via javascript\n+\n+ # Type Text //input[@id="form-widgets-IEventBasic-start"] ${EVENT_START_MONTH}${EVENT_START_DAY}${EVENT_START_YEAR} delay=50ms clear=No\n+ # Keyboard Key press Tab\n+ # Type Text //input[@id="form-widgets-IEventBasic-start"] ${EVENT_START_HOUR_12}00${EVENT_START_HOUR_MERIDIEM} delay=50ms clear=No\n+\n+ Evaluate JavaScript //input[@id="form-widgets-IEventBasic-start"]\n+ ... (element, arg) => {\n+ ... element.value = arg\n+ ... return\n+ ... }\n+ ... all_elements=False\n+ ... arg=${EVENT_START_ISO}\n+\n+ Evaluate JavaScript //input[@id="form-widgets-IEventBasic-end"]\n+ ... (element, arg) => {\n+ ... element.value = arg\n+ ... return\n+ ... }\n+ ... all_elements=False\n+ ... arg=${EVENT_END_ISO}\n \n \n I click on Recurrence Add\n- Click Link css=a[name=\'riedit\']\n- Wait until page contains Repeat\n+ Click //a[@name="riedit"]\n \n I select weekly repeat\n- Select From List by label css=#rirtemplate weekly\n+ Select Options By //div[contains(@class,"modal-wrapper")]//select[@id="rirtemplate"] value weekly\n \n I fill ${NUM} occurrences\n- Input text name=rirangebyoccurrencesvalue ${NUM}\n- Focus css=.risavebutton\n+ Type Text //div[contains(@class,"modal-wrapper")]//form//input[@name="rirangebyoccurrencesvalue"] ${NUM}\n+ Keyboard Key press Tab\n \n I click save in the overlay\n- Click Button css=.risavebutton\n+ Click //div[contains(@class,"modal-wrapper")]//div[@class="modal-footer"]//button[contains(@class,"risavebutton")]\n \n I click save in the form\n- Click Button name=form.buttons.save\n+ Click //button[@name="form.buttons.save"]\n \n I open an event occurrence\n- Go to ${PLONE_URL}/testevent/2014-02-17\n+ ${url}= Get Property //*[@id="content-core"]/div/div/div/div[2]/div[1]/div/div/div[2]/p/span[2]/a href\n+ Go to ${url}\n \n I open the event listing\n- Go to ${PLONE_URL}/@@event_listing?mode=all\n-\n+ Go to ${PLONE_URL}/@@event_listing?mode=all\n \n # Then\n \n it should be filled in the form\n- Textfield Value Should Be css=#formfield-form-widgets-IEventBasic-start input.pattern-pickadate-date ${EVENT_START_MONTHNAME} ${EVENT_START_DAY}, ${EVENT_START_YEAR}\n- Textfield Should Contain css=#formfield-form-widgets-IEventBasic-start input.pattern-pickadate-time ${EVENT_START_HOUR}:00\n- Textfield Value Should Be css=#formfield-form-widgets-IEventBasic-end input.pattern-pickadate-date ${EVENT_END_MONTHNAME} ${EVENT_END_DAY}, ${EVENT_END_YEAR}\n- Textfield Should Contain css=#formfield-form-widgets-IEventBasic-end input.pattern-pickadate-time ${EVENT_END_HOUR}:00\n+ Get Property //input[@id="form-widgets-IEventBasic-start"] value should be ${EVENT_START_ISO}\n+ Get Property //input[@id="form-widgets-IEventBasic-end"] value should be ${EVENT_END_ISO}\n \n I should see the recurrence overlay\n- Page Should Contain Recurrence\n- Page Should Contain Selected dates\n- Page Should Contain Element //div[contains(@class, \'occurrence\') and contains(@class, \'start\')] 1\n- Page Should Contain Element //div[contains(@class, \'occurrence\') and contains(@class, \'rrule\')] 6\n+ Get Text //div[contains(@class,"modal-wrapper")]//form/div[@class="rioccurrencesactions"]/div/h6/strong should be Selected dates\n+ Get Element Count //div[contains(@class, \'occurrence\') and contains(@class, \'start\')] should be 1\n+ Get Element Count //div[contains(@class, \'occurrence\') and contains(@class, \'rrule\')] should be 6\n \n I should see the recurrence overlay in weeekly repeat mode\n- Page Should Contain Repeats every\n- Page Should Contain Sun\n- Page Should Contain Mon\n- Page Should Contain Tue\n- Page Should Contain Wed\n- Page Should Contain Thu\n- Page Should Contain Fri\n- Page Should Contain Sat\n-\n-the overlay should be closed\n- Page Should Not Contain class=.riform\n-\n-# About class matching with x-path, see:\n-# http://stackoverflow.com/questions/1604471/how-can-i-find-an-element-by-css-class-with-xpath\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyinterval"] contains Repeat every\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Sun\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Mon\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Tue\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Wed\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Thu\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Fri\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Sat\n \n I should see ${NUM} occurrences in the overlay\n- Page Should Contain Element //div[contains(concat(\' \', normalize-space(@class), \' \'), \' rioccurrences \')]/div[contains(@class, \'occurrence\')] ${NUM}\n+ Get Element Count //div[contains(@class,"modal-wrapper")]//div[@class="rioccurrences"]/div[contains(@class, \'occurrence\')] should be ${NUM}\n+\n+the overlay should be closed\n+ Get Element Count //div[contains(@class,"modal-wrapper")]//*[contains(@class,"riform")] should be 0\n \n I should see ${NUM} occurrences in the form\n- Page Should Contain Element //div[contains(concat(\' \', normalize-space(@class), \' \'), \' ridisplay \')]/div[contains(concat(\' \', normalize-space(@class), \' \'), \' rioccurrences \')]/div[contains(@class, \'occurrence\')] ${NUM}\n+ Get Element Count //div[contains(@class,"ridisplay")]//div[@class="rioccurrences"]/div[contains(@class, \'occurrence\')] should be ${NUM}\n \n I should see the event detail view\n- Page Should Contain Testevent\n- Page Should Contain Test description\n- Page Should Contain All dates\n- Page Should Contain Test location\n- Page Should Contain Test name\n- Page Should Contain +1234567890\n- Page Should Contain Test attendee\n- Page Should Contain Visit external website\n- Page Should Contain iCal\n+ Get Text //*[@id="global_statusmessage"] contains Item created\n+ Get Text //article[@id="content"]/header contains Testevent\n+ Get Text //article[@id="content"]/header contains Test description\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test location\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test name\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains +1234567890\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test attendee\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Visit external website\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains iCal\n \n I should see the occurrence detail view\n- Page Should Contain Testevent\n- Page Should Contain Test description\n- Page Should Contain All dates\n- Page Should Contain Test location\n- Page Should Contain Test name\n- Page Should Contain +1234567890\n- Page Should Contain Test attendee\n- Page Should Contain Visit external website\n- Page Should Contain iCal\n+ Get Text //article[@id="content"]/header contains Testevent\n+ Get Text //article[@id="content"]/header contains Test description\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test location\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test name\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains +1234567890\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test attendee\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Visit external website\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains iCal\n \n I should see the event listing view\n- Page Should Contain Element //article[@class="vevent"] 3\n+ Get Element Count //article[contains(@class,"vevent")] should be 3\ndiff --git a/plone/app/event/tests/robot/variables.py b/plone/app/event/tests/robot/variables.py\nindex 4514b019..c51e2d0b 100644\n--- a/plone/app/event/tests/robot/variables.py\n+++ b/plone/app/event/tests/robot/variables.py\n@@ -1,23 +1,9 @@\n-# setup dates\n from datetime import datetime\n from datetime import timedelta\n \n-import locale\n-\n-\n-# important for MONTHNAME\n-locale.setlocale(locale.LC_ALL, "en_US")\n \n NOW = datetime.now() + timedelta(days=1)\n-EVENT_START_YEAR = NOW.strftime("%Y")\n-EVENT_START_MONTH = str(NOW.month - 1)\n-EVENT_START_MONTHNAME = NOW.strftime("%B")\n-EVENT_START_DAY = NOW.strftime("%d")\n-EVENT_START_HOUR = str(int(NOW.strftime("%I")))\n-\n END = NOW + timedelta(hours=1)\n-EVENT_END_YEAR = END.strftime("%Y")\n-EVENT_END_MONTH = str(END.month - 1)\n-EVENT_END_MONTHNAME = END.strftime("%B")\n-EVENT_END_DAY = END.strftime("%d")\n-EVENT_END_HOUR = str(int(END.strftime("%I")))\n+\n+EVENT_START_ISO = NOW.strftime("%Y-%m-%dT%H:00")\n+EVENT_END_ISO = END.strftime("%Y-%m-%dT%H:00")\n' + +Repository: plone.app.event + + +Branch: refs/heads/master +Date: 2024-09-11T08:28:07+02:00 +Author: 1letter (1letter) <1letter@gmx.de> +Commit: https://github.com/plone/plone.app.event/commit/f215959f67dedbb8a362b5efef510f27b03e2c17 + +add news + +Files changed: +A news/408.feature + +b'diff --git a/news/408.feature b/news/408.feature\nnew file mode 100644\nindex 00000000..0514ad7d\n--- /dev/null\n+++ b/news/408.feature\n@@ -0,0 +1,2 @@\n+Update robot framework tests to use `robotframework-browser` (`playwright` integration on robotframework).\n+[1letter]\n\\ No newline at end of file\n' + +Repository: plone.app.event + + +Branch: refs/heads/master +Date: 2024-09-11T15:35:37+02:00 +Author: 1letter (1letter) <1letter@gmx.de> +Commit: https://github.com/plone/plone.app.event/commit/0eb148822308d260f172fa2143b19b93306197ad + +lint + +Files changed: +M plone/app/event/tests/robot/test_event_roundtrip.robot + +b'diff --git a/plone/app/event/tests/robot/test_event_roundtrip.robot b/plone/app/event/tests/robot/test_event_roundtrip.robot\nindex e41e281c..34bb19cb 100644\n--- a/plone/app/event/tests/robot/test_event_roundtrip.robot\n+++ b/plone/app/event/tests/robot/test_event_roundtrip.robot\n@@ -1,13 +1,13 @@\n *** Settings ***\n \n-Resource plone/app/robotframework/browser.robot\n+Resource plone/app/robotframework/browser.robot\n \n-Library Remote ${PLONE_URL}/RobotRemote\n+Library Remote ${PLONE_URL}/RobotRemote\n \n-Test Setup Run Keywords Plone test setup\n-Test Teardown Run keywords Plone test teardown\n+Test Setup Run Keywords Plone test setup\n+Test Teardown Run keywords Plone test teardown\n \n-Variables plone/app/event/tests/robot/variables.py\n+Variables variables.py\n \n \n *** Test cases ***\n@@ -68,23 +68,16 @@ I select a date in calendar overlay\n # reason 2: shadow root (user-agent) can\'t access via css or xpath selectors\n #\n # temporarily solution: set value via javascript\n-\n- # Type Text //input[@id="form-widgets-IEventBasic-start"] ${EVENT_START_MONTH}${EVENT_START_DAY}${EVENT_START_YEAR} delay=50ms clear=No\n- # Keyboard Key press Tab\n- # Type Text //input[@id="form-widgets-IEventBasic-start"] ${EVENT_START_HOUR_12}00${EVENT_START_HOUR_MERIDIEM} delay=50ms clear=No\n-\n Evaluate JavaScript //input[@id="form-widgets-IEventBasic-start"]\n- ... (element, arg) => {\n- ... element.value = arg\n- ... return\n+ ... (el, arg) => {\n+ ... el.setAttribute("value", arg)\n ... }\n ... all_elements=False\n ... arg=${EVENT_START_ISO}\n \n- Evaluate JavaScript //input[@id="form-widgets-IEventBasic-end"]\n- ... (element, arg) => {\n- ... element.value = arg\n- ... return\n+ Evaluate JavaScript ${None}\n+ ... (el,arg) => {\n+ ... el.setAttribute("value", arg)\n ... }\n ... all_elements=False\n ... arg=${EVENT_END_ISO}\n@@ -116,8 +109,8 @@ I open the event listing\n # Then\n \n it should be filled in the form\n- Get Property //input[@id="form-widgets-IEventBasic-start"] value should be ${EVENT_START_ISO}\n- Get Property //input[@id="form-widgets-IEventBasic-end"] value should be ${EVENT_END_ISO}\n+ Get Attribute //input[@id="form-widgets-IEventBasic-start"] value should be ${EVENT_START_ISO}\n+ Get Attribute //input[@id="form-widgets-IEventBasic-end"] value should be ${EVENT_END_ISO}\n \n I should see the recurrence overlay\n Get Text //div[contains(@class,"modal-wrapper")]//form/div[@class="rioccurrencesactions"]/div/h6/strong should be Selected dates\n' + +Repository: plone.app.event + + +Branch: refs/heads/master +Date: 2024-09-11T15:35:58+02:00 +Author: 1letter (1letter) <1letter@gmx.de> +Commit: https://github.com/plone/plone.app.event/commit/6577c4ab8610979b089a99781737f665cd15c5d4 + +lint + +Files changed: +M plone/app/event/tests/robot/variables.py + +b'diff --git a/plone/app/event/tests/robot/variables.py b/plone/app/event/tests/robot/variables.py\nindex c51e2d0b..646e8704 100644\n--- a/plone/app/event/tests/robot/variables.py\n+++ b/plone/app/event/tests/robot/variables.py\n@@ -2,8 +2,9 @@\n from datetime import timedelta\n \n \n+# important for MONTHNAME\n NOW = datetime.now() + timedelta(days=1)\n-END = NOW + timedelta(hours=1)\n-\n EVENT_START_ISO = NOW.strftime("%Y-%m-%dT%H:00")\n+\n+END = NOW + timedelta(hours=1)\n EVENT_END_ISO = END.strftime("%Y-%m-%dT%H:00")\n' + +Repository: plone.app.event + + +Branch: refs/heads/master +Date: 2024-09-11T15:40:00+02:00 +Author: 1letter (1letter) <1letter@gmx.de> +Commit: https://github.com/plone/plone.app.event/commit/a12b32137be0320567e2859a8a4d3418dbc37757 + +fix test + +Files changed: +M plone/app/event/tests/robot/test_event_roundtrip.robot + +b'diff --git a/plone/app/event/tests/robot/test_event_roundtrip.robot b/plone/app/event/tests/robot/test_event_roundtrip.robot\nindex 34bb19cb..02c1c9c1 100644\n--- a/plone/app/event/tests/robot/test_event_roundtrip.robot\n+++ b/plone/app/event/tests/robot/test_event_roundtrip.robot\n@@ -75,7 +75,7 @@ I select a date in calendar overlay\n ... all_elements=False\n ... arg=${EVENT_START_ISO}\n \n- Evaluate JavaScript ${None}\n+ Evaluate JavaScript //input[@id="form-widgets-IEventBasic-end"]\n ... (el,arg) => {\n ... el.setAttribute("value", arg)\n ... }\n' + +Repository: plone.app.event + + +Branch: refs/heads/master +Date: 2024-09-12T08:09:10+02:00 +Author: 1letter (1letter) <1letter@gmx.de> +Commit: https://github.com/plone/plone.app.event/commit/9fa3dfa0eb5291bddc7341fcddeccf0381d3dd5e + +Change import Fixture + +Files changed: +M plone/app/event/testing.py + +b'diff --git a/plone/app/event/testing.py b/plone/app/event/testing.py\nindex e6e83ecf..ef5c3610 100644\n--- a/plone/app/event/testing.py\n+++ b/plone/app/event/testing.py\n@@ -1,5 +1,5 @@\n from plone.app.event.interfaces import IBrowserLayer\n-from plone.app.robotframework.testing import AUTOLOGIN_LIBRARY_FIXTURE\n+from plone.app.robotframework.testing import REMOTE_LIBRARY_BUNDLE_FIXTURE\n from plone.app.testing import FunctionalTesting\n from plone.app.testing import IntegrationTesting\n from plone.app.testing import PLONE_FIXTURE\n@@ -123,7 +123,7 @@ def setUpPloneSite(self, portal):\n PAEventDX_ROBOT_TESTING = FunctionalTesting(\n bases=(\n PAEventDX_FIXTURE,\n- AUTOLOGIN_LIBRARY_FIXTURE,\n+ REMOTE_LIBRARY_BUNDLE_FIXTURE,\n WSGI_SERVER_FIXTURE,\n ),\n name="plone.app.event.dx:Robot",\n' + +Repository: plone.app.event + + +Branch: refs/heads/master +Date: 2024-09-12T08:09:20+02:00 +Author: 1letter (1letter) <1letter@gmx.de> +Commit: https://github.com/plone/plone.app.event/commit/b97f6f72bd5d01f94f935025499a262b3cfd45d5 + +Fix robot test + +Files changed: +M plone/app/event/tests/robot/test_event_roundtrip.robot + +b'diff --git a/plone/app/event/tests/robot/test_event_roundtrip.robot b/plone/app/event/tests/robot/test_event_roundtrip.robot\nindex 02c1c9c1..61df8455 100644\n--- a/plone/app/event/tests/robot/test_event_roundtrip.robot\n+++ b/plone/app/event/tests/robot/test_event_roundtrip.robot\n@@ -15,9 +15,6 @@ Variables variables.py\n Scenario: Create and view an event\n Given a site owner\n and an event add form\n- When I select a date in calendar overlay\n- Then it should be filled in the form\n-\n When I click on Recurrence Add\n Then I should see the recurrence overlay\n \n@@ -46,42 +43,41 @@ Scenario: Create and view an event\n # Given\n \n a site owner\n- Enable autologin as Manager\n+ Enable autologin as Manager\n \n an event add form\n- Go to ${PLONE_URL}/++add++Event\n- Type text //input[@name="form.widgets.IDublinCore.title"] Testevent\n- Type text //textarea[@id="form-widgets-IDublinCore-description"] Test description\n- Type text //input[@id="form-widgets-IEventLocation-location"] Test location\n- Type text //textarea[@id="form-widgets-IEventAttendees-attendees"] Test attendee\n- Type text //input[@id="form-widgets-IEventContact-contact_name"] Test name\n- Type text //input[@id="form-widgets-IEventContact-contact_email"] test@email.com\n- Type text //input[@id="form-widgets-IEventContact-contact_phone"] +1234567890\n- Type text //input[@id="form-widgets-IEventContact-event_url"] http://test.url\n-\n-# When\n-\n-I select a date in calendar overlay\n- # we can\'t set safely the date in the test via native browser ui "date input" element\n- # reason 1: different ui\'s, depending on language of system browser\n- # 12 hours format with meridiem input (AM/PM) vs. 24 hours format\n- # reason 2: shadow root (user-agent) can\'t access via css or xpath selectors\n- #\n- # temporarily solution: set value via javascript\n- Evaluate JavaScript //input[@id="form-widgets-IEventBasic-start"]\n+ Go to ${PLONE_URL}/++add++Event\n+ Type text //input[@name="form.widgets.IDublinCore.title"] Testevent\n+ Type text //textarea[@id="form-widgets-IDublinCore-description"] Test description\n+ Type text //input[@id="form-widgets-IEventLocation-location"] Test location\n+ Type text //textarea[@id="form-widgets-IEventAttendees-attendees"] Test attendee\n+ Type text //input[@id="form-widgets-IEventContact-contact_name"] Test name\n+ Type text //input[@id="form-widgets-IEventContact-contact_email"] test@email.com\n+ Type text //input[@id="form-widgets-IEventContact-contact_phone"] +1234567890\n+ Type text //input[@id="form-widgets-IEventContact-event_url"] http://test.url\n+\n+ # we can\'t set safely the date in the test via native browser ui "date input" element\n+ # reason 1: different ui\'s, depending on language of system browser\n+ # 12 hours format with meridiem input (AM/PM) vs. 24 hours format\n+ # reason 2: shadow root (user-agent) can\'t access via css or xpath selectors\n+ #\n+ # temporarily solution: set value via javascript\n+\n+ Evaluate JavaScript //input[@name="form.widgets.IEventBasic.start"]\n ... (el, arg) => {\n ... el.setAttribute("value", arg)\n ... }\n ... all_elements=False\n ... arg=${EVENT_START_ISO}\n \n- Evaluate JavaScript //input[@id="form-widgets-IEventBasic-end"]\n+ Evaluate JavaScript //input[@name="form.widgets.IEventBasic.start"]\n ... (el,arg) => {\n ... el.setAttribute("value", arg)\n ... }\n ... all_elements=False\n ... arg=${EVENT_END_ISO}\n \n+# When\n \n I click on Recurrence Add\n Click //a[@name="riedit"]\n@@ -108,10 +104,6 @@ I open the event listing\n \n # Then\n \n-it should be filled in the form\n- Get Attribute //input[@id="form-widgets-IEventBasic-start"] value should be ${EVENT_START_ISO}\n- Get Attribute //input[@id="form-widgets-IEventBasic-end"] value should be ${EVENT_END_ISO}\n-\n I should see the recurrence overlay\n Get Text //div[contains(@class,"modal-wrapper")]//form/div[@class="rioccurrencesactions"]/div/h6/strong should be Selected dates\n Get Element Count //div[contains(@class, \'occurrence\') and contains(@class, \'start\')] should be 1\n' + +Repository: plone.app.event + + +Branch: refs/heads/master +Date: 2024-10-18T15:46:20+02:00 Author: Peter Mathis (petschki) -Commit: https://github.com/plone/plone.app.widgets/commit/9a6e08b48af097f417e333dc7c87f8d7e58675f1 +Commit: https://github.com/plone/plone.app.event/commit/2aee8a3937bfe46cf638e86cadfd5200095c39f8 -Merge pull request #225 from plone/deactivate-robot-tests +Merge pull request #409 from plone/port-robot-tests -deactivate robot tests +Playwright based robot test Files changed: -A news/224.tests -A plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot -A plone/app/widgets/tests/robot/deactivate_test_select_widget.robot -D plone/app/widgets/tests/robot/test_querystring_widget.robot -D plone/app/widgets/tests/robot/test_select_widget.robot +A news/408.feature +A plone/app/event/tests/test_robot.py +M plone/app/event/testing.py +M plone/app/event/tests/robot/test_event_roundtrip.robot +M plone/app/event/tests/robot/variables.py +D plone/app/event/tests/INACTIVE_test_robot.py -b'diff --git a/news/224.tests b/news/224.tests\nnew file mode 100644\nindex 00000000..fbab5550\n--- /dev/null\n+++ b/news/224.tests\n@@ -0,0 +1 @@\n+deactivate robot tests in this package and move the tests to Products.CMFPlone @1letter\n\\ No newline at end of file\ndiff --git a/plone/app/widgets/tests/robot/test_querystring_widget.robot b/plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot\nsimilarity index 100%\nrename from plone/app/widgets/tests/robot/test_querystring_widget.robot\nrename to plone/app/widgets/tests/robot/deactivate_test_querystring_widget.robot\ndiff --git a/plone/app/widgets/tests/robot/test_select_widget.robot b/plone/app/widgets/tests/robot/deactivate_test_select_widget.robot\nsimilarity index 100%\nrename from plone/app/widgets/tests/robot/test_select_widget.robot\nrename to plone/app/widgets/tests/robot/deactivate_test_select_widget.robot\n' +b'diff --git a/news/408.feature b/news/408.feature\nnew file mode 100644\nindex 000000000..0514ad7d6\n--- /dev/null\n+++ b/news/408.feature\n@@ -0,0 +1,2 @@\n+Update robot framework tests to use `robotframework-browser` (`playwright` integration on robotframework).\n+[1letter]\n\\ No newline at end of file\ndiff --git a/plone/app/event/testing.py b/plone/app/event/testing.py\nindex e6e83ecfa..ef5c3610f 100644\n--- a/plone/app/event/testing.py\n+++ b/plone/app/event/testing.py\n@@ -1,5 +1,5 @@\n from plone.app.event.interfaces import IBrowserLayer\n-from plone.app.robotframework.testing import AUTOLOGIN_LIBRARY_FIXTURE\n+from plone.app.robotframework.testing import REMOTE_LIBRARY_BUNDLE_FIXTURE\n from plone.app.testing import FunctionalTesting\n from plone.app.testing import IntegrationTesting\n from plone.app.testing import PLONE_FIXTURE\n@@ -123,7 +123,7 @@ def setUpPloneSite(self, portal):\n PAEventDX_ROBOT_TESTING = FunctionalTesting(\n bases=(\n PAEventDX_FIXTURE,\n- AUTOLOGIN_LIBRARY_FIXTURE,\n+ REMOTE_LIBRARY_BUNDLE_FIXTURE,\n WSGI_SERVER_FIXTURE,\n ),\n name="plone.app.event.dx:Robot",\ndiff --git a/plone/app/event/tests/robot/test_event_roundtrip.robot b/plone/app/event/tests/robot/test_event_roundtrip.robot\nindex 884a4cb98..61df8455b 100644\n--- a/plone/app/event/tests/robot/test_event_roundtrip.robot\n+++ b/plone/app/event/tests/robot/test_event_roundtrip.robot\n@@ -1,49 +1,41 @@\n *** Settings ***\n \n-Resource plone/app/robotframework/selenium.robot\n-Resource plone/app/robotframework/keywords.robot\n+Resource plone/app/robotframework/browser.robot\n \n-Library Remote ${PLONE_URL}/RobotRemote\n+Library Remote ${PLONE_URL}/RobotRemote\n \n-Test Setup Open test browser\n-Test Teardown Close all browsers\n+Test Setup Run Keywords Plone test setup\n+Test Teardown Run keywords Plone test teardown\n \n-Variables plone/app/event/tests/robot/variables.py\n+Variables variables.py\n \n \n-*** Variables ***\n-\n-\n-*** Test Cases ***\n+*** Test cases ***\n \n Scenario: Create and view an event\n- Given a site owner\n- and an event add form\n- Debug\n- When I select a date in calendar overlay\n- Then it should be filled in the form\n-\n- When I click on Recurrence Add\n- Then I should see the recurrence overlay\n+ Given a site owner\n+ and an event add form\n+ When I click on Recurrence Add\n+ Then I should see the recurrence overlay\n \n- When I select weekly repeat\n- Then I should see the recurrence overlay in weeekly repeat mode\n+ When I select weekly repeat\n+ Then I should see the recurrence overlay in weeekly repeat mode\n \n- When I fill 3 occurrences\n- Then I should see 3 occurrences in the overlay\n+ When I fill 3 occurrences\n+ Then I should see 3 occurrences in the overlay\n \n- When I click save in the overlay\n- Then the overlay should be closed\n- And I should see 3 occurrences in the form\n+ When I click save in the overlay\n+ Then the overlay should be closed\n+ and I should see 3 occurrences in the form\n \n- When I click save in the form\n- Then I should see the event detail view\n+ When I click save in the form\n+ Then I should see the event detail view\n \n- When I open an event occurrence\n- Then I should see the occurrence detail view\n+ When I open an event occurrence\n+ Then I should see the occurrence detail view\n \n- When I open the event listing\n- Then I should see the event listing view\n+ When I open the event listing\n+ Then I should see the event listing view\n \n \n *** Keywords ***\n@@ -51,115 +43,111 @@ Scenario: Create and view an event\n # Given\n \n a site owner\n- Enable autologin as Manager\n+ Enable autologin as Manager\n \n an event add form\n- Go to ${PLONE_URL}/++add++Event\n- Wait until page contains Add Event\n- Input text name=form.widgets.IDublinCore.title Testevent\n- Input text id=form-widgets-IDublinCore-description Test description\n- Input text id=form-widgets-IEventLocation-location Test location\n- Input text id=form-widgets-IEventAttendees-attendees Test attendee\n- Input text id=form-widgets-IEventContact-contact_name Test name\n- Input text id=form-widgets-IEventContact-contact_email test@email.com\n- Input text id=form-widgets-IEventContact-contact_phone +1234567890\n- Input text id=form-widgets-IEventContact-event_url http://test.url\n+ Go to ${PLONE_URL}/++add++Event\n+ Type text //input[@name="form.widgets.IDublinCore.title"] Testevent\n+ Type text //textarea[@id="form-widgets-IDublinCore-description"] Test description\n+ Type text //input[@id="form-widgets-IEventLocation-location"] Test location\n+ Type text //textarea[@id="form-widgets-IEventAttendees-attendees"] Test attendee\n+ Type text //input[@id="form-widgets-IEventContact-contact_name"] Test name\n+ Type text //input[@id="form-widgets-IEventContact-contact_email"] test@email.com\n+ Type text //input[@id="form-widgets-IEventContact-contact_phone"] +1234567890\n+ Type text //input[@id="form-widgets-IEventContact-event_url"] http://test.url\n+\n+ # we can\'t set safely the date in the test via native browser ui "date input" element\n+ # reason 1: different ui\'s, depending on language of system browser\n+ # 12 hours format with meridiem input (AM/PM) vs. 24 hours format\n+ # reason 2: shadow root (user-agent) can\'t access via css or xpath selectors\n+ #\n+ # temporarily solution: set value via javascript\n+\n+ Evaluate JavaScript //input[@name="form.widgets.IEventBasic.start"]\n+ ... (el, arg) => {\n+ ... el.setAttribute("value", arg)\n+ ... }\n+ ... all_elements=False\n+ ... arg=${EVENT_START_ISO}\n+\n+ Evaluate JavaScript //input[@name="form.widgets.IEventBasic.start"]\n+ ... (el,arg) => {\n+ ... el.setAttribute("value", arg)\n+ ... }\n+ ... all_elements=False\n+ ... arg=${EVENT_END_ISO}\n \n # When\n \n-I select a date in calendar overlay\n- Click Element xpath=//div[@data-fieldname="form.widgets.IEventBasic.start"]//input[contains(@class,"pattern-pickadate-date")]\n- Wait until page contains Sat\n-# For Javascript: Month 1 = February.\n- Select from list by label css=div[data-fieldname="form.widgets.IEventBasic.start"] .picker__select--month ${EVENT_START_MONTHNAME}\n- Select from list by label css=div[data-fieldname="form.widgets.IEventBasic.start"] select.picker__select--year ${EVENT_START_YEAR}\n- Click Element xpath=//div[@data-fieldname="form.widgets.IEventBasic.start"]//div[contains(@class, \'picker__day\')][contains(text(), "${EVENT_START_DAY}")]\n-# Select Times\n- Click Element xpath=//div[@data-fieldname="form.widgets.IEventBasic.start"]//input[contains(@class,"pattern-pickadate-time")]\n- Click Element xpath=//div[@data-fieldname="form.widgets.IEventBasic.start"]//div[contains(@class, \'picker--time\')]//li[contains(@class, \'picker__list-item\')][contains(text(), "${EVENT_START_HOUR}:00")]\n-\n-\n I click on Recurrence Add\n- Click Link css=a[name=\'riedit\']\n- Wait until page contains Repeat\n+ Click //a[@name="riedit"]\n \n I select weekly repeat\n- Select From List by label css=#rirtemplate weekly\n+ Select Options By //div[contains(@class,"modal-wrapper")]//select[@id="rirtemplate"] value weekly\n \n I fill ${NUM} occurrences\n- Input text name=rirangebyoccurrencesvalue ${NUM}\n- Focus css=.risavebutton\n+ Type Text //div[contains(@class,"modal-wrapper")]//form//input[@name="rirangebyoccurrencesvalue"] ${NUM}\n+ Keyboard Key press Tab\n \n I click save in the overlay\n- Click Button css=.risavebutton\n+ Click //div[contains(@class,"modal-wrapper")]//div[@class="modal-footer"]//button[contains(@class,"risavebutton")]\n \n I click save in the form\n- Click Button name=form.buttons.save\n+ Click //button[@name="form.buttons.save"]\n \n I open an event occurrence\n- Go to ${PLONE_URL}/testevent/2014-02-17\n+ ${url}= Get Property //*[@id="content-core"]/div/div/div/div[2]/div[1]/div/div/div[2]/p/span[2]/a href\n+ Go to ${url}\n \n I open the event listing\n- Go to ${PLONE_URL}/@@event_listing?mode=all\n-\n+ Go to ${PLONE_URL}/@@event_listing?mode=all\n \n # Then\n \n-it should be filled in the form\n- Textfield Value Should Be css=#formfield-form-widgets-IEventBasic-start input.pattern-pickadate-date ${EVENT_START_MONTHNAME} ${EVENT_START_DAY}, ${EVENT_START_YEAR}\n- Textfield Should Contain css=#formfield-form-widgets-IEventBasic-start input.pattern-pickadate-time ${EVENT_START_HOUR}:00\n- Textfield Value Should Be css=#formfield-form-widgets-IEventBasic-end input.pattern-pickadate-date ${EVENT_END_MONTHNAME} ${EVENT_END_DAY}, ${EVENT_END_YEAR}\n- Textfield Should Contain css=#formfield-form-widgets-IEventBasic-end input.pattern-pickadate-time ${EVENT_END_HOUR}:00\n-\n I should see the recurrence overlay\n- Page Should Contain Recurrence\n- Page Should Contain Selected dates\n- Page Should Contain Element //div[contains(@class, \'occurrence\') and contains(@class, \'start\')] 1\n- Page Should Contain Element //div[contains(@class, \'occurrence\') and contains(@class, \'rrule\')] 6\n+ Get Text //div[contains(@class,"modal-wrapper")]//form/div[@class="rioccurrencesactions"]/div/h6/strong should be Selected dates\n+ Get Element Count //div[contains(@class, \'occurrence\') and contains(@class, \'start\')] should be 1\n+ Get Element Count //div[contains(@class, \'occurrence\') and contains(@class, \'rrule\')] should be 6\n \n I should see the recurrence overlay in weeekly repeat mode\n- Page Should Contain Repeats every\n- Page Should Contain Sun\n- Page Should Contain Mon\n- Page Should Contain Tue\n- Page Should Contain Wed\n- Page Should Contain Thu\n- Page Should Contain Fri\n- Page Should Contain Sat\n-\n-the overlay should be closed\n- Page Should Not Contain class=.riform\n-\n-# About class matching with x-path, see:\n-# http://stackoverflow.com/questions/1604471/how-can-i-find-an-element-by-css-class-with-xpath\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyinterval"] contains Repeat every\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Sun\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Mon\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Tue\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Wed\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Thu\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Fri\n+ Get Text //div[contains(@class,"modal-wrapper")]//form//div[@id="riweeklyweekdays"] contains Sat\n \n I should see ${NUM} occurrences in the overlay\n- Page Should Contain Element //div[contains(concat(\' \', normalize-space(@class), \' \'), \' rioccurrences \')]/div[contains(@class, \'occurrence\')] ${NUM}\n+ Get Element Count //div[contains(@class,"modal-wrapper")]//div[@class="rioccurrences"]/div[contains(@class, \'occurrence\')] should be ${NUM}\n+\n+the overlay should be closed\n+ Get Element Count //div[contains(@class,"modal-wrapper")]//*[contains(@class,"riform")] should be 0\n \n I should see ${NUM} occurrences in the form\n- Page Should Contain Element //div[contains(concat(\' \', normalize-space(@class), \' \'), \' ridisplay \')]/div[contains(concat(\' \', normalize-space(@class), \' \'), \' rioccurrences \')]/div[contains(@class, \'occurrence\')] ${NUM}\n+ Get Element Count //div[contains(@class,"ridisplay")]//div[@class="rioccurrences"]/div[contains(@class, \'occurrence\')] should be ${NUM}\n \n I should see the event detail view\n- Page Should Contain Testevent\n- Page Should Contain Test description\n- Page Should Contain All dates\n- Page Should Contain Test location\n- Page Should Contain Test name\n- Page Should Contain +1234567890\n- Page Should Contain Test attendee\n- Page Should Contain Visit external website\n- Page Should Contain iCal\n+ Get Text //*[@id="global_statusmessage"] contains Item created\n+ Get Text //article[@id="content"]/header contains Testevent\n+ Get Text //article[@id="content"]/header contains Test description\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test location\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test name\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains +1234567890\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test attendee\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Visit external website\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains iCal\n \n I should see the occurrence detail view\n- Page Should Contain Testevent\n- Page Should Contain Test description\n- Page Should Contain All dates\n- Page Should Contain Test location\n- Page Should Contain Test name\n- Page Should Contain +1234567890\n- Page Should Contain Test attendee\n- Page Should Contain Visit external website\n- Page Should Contain iCal\n+ Get Text //article[@id="content"]/header contains Testevent\n+ Get Text //article[@id="content"]/header contains Test description\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test location\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test name\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains +1234567890\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Test attendee\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains Visit external website\n+ Get Text //div[@id="content-core"]//div[contains(@class,"event-summary")] contains iCal\n \n I should see the event listing view\n- Page Should Contain Element //article[@class="vevent"] 3\n+ Get Element Count //article[contains(@class,"vevent")] should be 3\ndiff --git a/plone/app/event/tests/robot/variables.py b/plone/app/event/tests/robot/variables.py\nindex 4514b019b..646e8704c 100644\n--- a/plone/app/event/tests/robot/variables.py\n+++ b/plone/app/event/tests/robot/variables.py\n@@ -1,23 +1,10 @@\n-# setup dates\n from datetime import datetime\n from datetime import timedelta\n \n-import locale\n-\n \n # important for MONTHNAME\n-locale.setlocale(locale.LC_ALL, "en_US")\n-\n NOW = datetime.now() + timedelta(days=1)\n-EVENT_START_YEAR = NOW.strftime("%Y")\n-EVENT_START_MONTH = str(NOW.month - 1)\n-EVENT_START_MONTHNAME = NOW.strftime("%B")\n-EVENT_START_DAY = NOW.strftime("%d")\n-EVENT_START_HOUR = str(int(NOW.strftime("%I")))\n+EVENT_START_ISO = NOW.strftime("%Y-%m-%dT%H:00")\n \n END = NOW + timedelta(hours=1)\n-EVENT_END_YEAR = END.strftime("%Y")\n-EVENT_END_MONTH = str(END.month - 1)\n-EVENT_END_MONTHNAME = END.strftime("%B")\n-EVENT_END_DAY = END.strftime("%d")\n-EVENT_END_HOUR = str(int(END.strftime("%I")))\n+EVENT_END_ISO = END.strftime("%Y-%m-%dT%H:00")\ndiff --git a/plone/app/event/tests/INACTIVE_test_robot.py b/plone/app/event/tests/test_robot.py\nsimilarity index 97%\nrename from plone/app/event/tests/INACTIVE_test_robot.py\nrename to plone/app/event/tests/test_robot.py\nindex 83e5c391d..223699c4b 100644\n--- a/plone/app/event/tests/INACTIVE_test_robot.py\n+++ b/plone/app/event/tests/test_robot.py\n@@ -1,4 +1,3 @@\n-# -*- conding: utf-8 -*-\n from plone.app.event.testing import PAEventDX_ROBOT_TESTING\n from plone.app.testing import ROBOT_TEST_LEVEL\n from plone.testing import layered\n'