Skip to content

Switch RobotFramework tests to Python in order to unbreak them for HTMX-powered pages#1841

Open
php-coder wants to merge 33 commits intomasterfrom
gh1749_python_robotframework
Open

Switch RobotFramework tests to Python in order to unbreak them for HTMX-powered pages#1841
php-coder wants to merge 33 commits intomasterfrom
gh1749_python_robotframework

Conversation

@php-coder
Copy link
Copy Markdown
Owner

@php-coder php-coder commented Mar 9, 2026

Fixes #1749

TODO:

  • Step 1: run tests on CI
    • fix Parent suite setup failed: TypeError: WebDriver.__init__() got an unexpected keyword argument 'service_log_path'
      • install chromedriver (with mise)
        • show chromedriver version
    • use python from mise.toml
      • fix mise WARN no precompiled python found for 3.6.15, force mise to use a precompiled version with "mise settings set python.compile false"
  • Step 2: make them pass
    • fix Importing test library 'HttpRequestLibrary' failed: ModuleNotFoundError: No module named 'HttpRequestLibrary'
    • fix critical tests: 5 failed:
      • fix Account.Authentication.Logic.Successful authentication: Page should have contained button 'value:Sign out' but did not.
      • fix Site.Csp.Report-Logic.CSP report should be accepted: No keyword with name 'Create Session' found.
        • fix Site.Csp.Report-Logic.CSP report should be accepted: No keyword with name 'Response Code Should Be' found.
      • fix Country.Creation.Logic.Create country with name in English (fill only mandatory fields): No keyword with name 'Xpath Should Match X Times' found.
      • fix Series.Search.Logic-User.Search series by non-existing catalog number in a collection: TypeError: sequence item 0: expected str instance, int found
      • fix Series.Search.Logic-Anonymous.Search series by non-existing catalog number: TypeError: sequence item 0: expected str instance, int found
  • Step 3: fix htmx-related tests (14 failed) and stop ignoring them:
    • fix Series.Sales.Creation.Logic.Add a sale with all fields: Keyword 'SeleniumLibrary.Get Element Attribute' expected 2 arguments, got 1
    • fix Series.Creation.Misc.Catalog numbers should ignore duplicate values: ElementNotInteractableException: Message: element not interactable
    • fix Series.Creation.Misc.Catalog numbers should accept existing numbers: ElementNotInteractableException: Message: element not interactable
    • fix Series.Add-Numbers.Logic.Add catalog numbers: Several failures occurred: 1) NoSuchElementException: Message: Cannot locate option with value: michel
    • fix Series.Add-Comment.Validation.Add comment with empty required field Element 'id:new-comment.errors' did not appear in 5 seconds (Adding an invalid comment to series leads to showing json with "Unprocessable Entity" error #1842)
      • fix Series.Add-Comment.Validation.Add comment with empty required field: The text of element 'id:new-comment.errors' should have been 'must not be empty' but it was 'must not be blank'
    • fix Series.Add-Comment.Validation.Add a blank comment: Element with locator 'id:new-comment' not found (Adding an invalid comment to series leads to showing json with "Unprocessable Entity" error #1842)
      • fix Series.Add-Comment.Validation.Add a blank comment: The text of element 'id:new-comment.errors' should have been 'must not be empty' but it was 'must not be blank'
    • fix Series.Add-Comment.Validation.Add too long comment: Element with locator 'id:new-comment' not found (Adding an invalid comment to series leads to showing json with "Unprocessable Entity" error #1842)
    • fix Series.Import.Request-Logic.Import series from external site with catalog numbers (use description locator):ElementClickInterceptedException: Message: element click intercepted: Element <a id="import-request-link" href="/series/import/request/8">...</a> is not clickable at point (587, 183)
    • fix Series.Import.Request-Logic.Import series and series sale with existing seller from an external site: Value of text field 'id:alt-price' should have been '1.5' but was '1.50'
      • fix Series.Import.Request-Logic.Import series and series sale with existing seller from an external site Keyword 'SeleniumLibrary.Get Element Attribute' expected 2 arguments, got 1
    • fix Series.Import.Request-Logic.Import series and series sale with a new seller from an external site: Keyword 'SeleniumLibrary.Get Element Attribute' expected 2 arguments, got 1
    • fix Collection.Remove-Series.Logic.Remove the first instance of a series from user's collection: No keyword with name 'Xpath Should Match X Times' found
    • fix Collection.Remove-Series.Logic.Remove the last instance of a series from user's collection: No keyword with name 'Xpath Should Match X Times' found
    • fix Collection.Estimation.Logic.Series with its price should be taken into account: Keyword 'SeleniumLibrary.Table Cell Should Contain' expected 4 to 5 arguments, got 3
      • fix Collection.Estimation.Logic.Series with its price should be taken into account: Table 'collection-estimation' footer did not contain text '100.00 RUB'
    • fix Collection.Estimation.Logic.Series without price should be shown but not taken into account: Keyword 'SeleniumLibrary.Table Cell Should Contain' expected 4 to 5 arguments, got 3
      • fix Collection.Estimation.Logic.Series without price should be shown but not taken into account Table 'collection-estimation' footer did not contain text '100.00 RUB'
    • fix Collection.Add-Series.Logic.Add the same series to user's collection again (incomplete series): No keyword with name 'Xpath Should Match X Times' found
    • fix Series.Creation.Logic-Admin.Create series by filling all fields: ElementNotInteractableException: Message: element not interactable
    • fix Country.Creation.Logic.Create country with name in English (fill only mandatory fields): Element with locator 'id:country-selectized' not found
  • Step 4: revise tests tagged by unstable
    • fix Account.Registration.Logic.After account creation an e-mail with activation link should be send: Resolving variable '${response.json['requests']}' failed: TypeError: 'method' object is not subscriptable
      • how to extract response.json() into variable?
    • fix Series.Add-Price.Logic.Add a price by a catalog: Several failures occurred: 1) NoSuchElementException: Message: Cannot locate option with value: michel
      • backport to master
  • Step 5: make tests pass locally
    • fix Series.Creation.Logic-User.Create series by filling all fields: ElementNotInteractableException: Message: element not interactable
    • fix Series.Creation.Validation-User.Create series with day of month but without month: ElementNotInteractableException: Message: element not interactable: Element is not currently visible and may not be manipulated
    • fix Collection.Add-Series.Logic.Add a series to user's collection (all stamps): The text of element 'id:number-of-stamps-block' should have been 'I have out of 2 stamps' but it was 'I have\nout of 2 stamps'.
    • fix Collection.Add-Series.Logic.Add the same series to user's collection again (incomplete series): The text of element 'id:series-status-msg' should have been 'You already have this series. Add another one instance:' but it was 'You don't have this series. Add one instance:'.
  • fix [ WARN ] Keyword 'RequestsLibrary.Post Request' is deprecated. Please use 'POST On Session' instead.
  • specify locator explicitly for Table Cell Should Contain and Table Footer Should Contain
  • deal with robot --version workaround
    • reproduce on fresh version
    • submit an issue or update comment
  • deal with Table Footer Should Contain workaround
  • configure dependabot to watch for requirements.txt
  • deal with caching
    • cache python dependencies
    • cache chrome/chromedriver (see also: browser-actions/setup-chrome#640)
  • speed up CI for development
    • disable unrelated workflows
      • revert
    • disable jdk 11/17
      • revert
  • fix action warnings
    • Warning: Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: jdx/mise-action@v3.5.1. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see:ttps://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
    • setup-java: (node:2341) [DEP0040] DeprecationWarning: The 'punycode' module is deprecated. Please use a userland alternative instead. (Use 'node --trace-deprecation ...' to show where the warning was created)

@php-coder php-coder force-pushed the gh1749_python_robotframework branch 2 times, most recently from 98d873d to 6785456 Compare March 15, 2026 13:33
@php-coder php-coder force-pushed the gh1749_python_robotframework branch 2 times, most recently from 714f2b5 to 5068c76 Compare March 21, 2026 14:04
…n English (fill only mandatory fields): No keyword with name 'Xpath Should Match X Times' found
…ed: No keyword with name 'Response Code Should Be' found
…ies sale with existing seller from an external site: Value of text field 'id:alt-price' should have been '1.5' but was '1.50'
…ies sale with a new seller from an external site: Keyword 'SeleniumLibrary.Get Element Attribute' expected 2 arguments, got 1
…nstance of a series from user's collection: No keyword with name 'Xpath Should Match X Times' found
…stance of a series from user's collection: No keyword with name 'Xpath Should Match X Times' found
…o user's collection again (incomplete series) No keyword with name 'Xpath Should Match X Times' found
… should be taken into account: Keyword 'SeleniumLibrary.Table Cell Should Contain' expected 4 to 5 arguments, got 3
…should be shown but not taken into account Keyword 'SeleniumLibrary.Table Cell Should Contain' expected 4 to 5 arguments, got 3
[skip ci]
@php-coder php-coder force-pushed the gh1749_python_robotframework branch from 5068c76 to bbcc6cd Compare March 22, 2026 13:54
@php-coder php-coder force-pushed the gh1749_python_robotframework branch from 2e6312c to 1432312 Compare March 26, 2026 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix integration tests because of unsupported HTMX in htmlunit

1 participant