Signed-off-by: Christopher Ng <chrng8@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Signed-off-by: Christopher Ng <chrng8@gmail.com>
By the default the browser window is not maximized, but opened with a
size of 1050x978px. In the Files app, when the navigation bar and the
side bar are both open, with the previous design that width caused the
file name to be very very narrow, but still clickable. However, with the
updated design the file name is too narrow and no longer clickable,
which breaks several acceptance tests that descend into subfolders. To
solve that now the browser window is maximized before running the tests,
which makes the window wide enough (1360px) to show the file name and
make it clickable.
This commit also removes a step to close the sidebar that was recently
added to address the problem mentioned above in a previous pull request.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Before it was checked if the new user form was visible, but it was not
waited for it. It seems that it can happen that the new user form is in
the DOM, and therefore found, but not visible yet when the tests run,
which caused them to (randomly) fail. Due to that now it is explicitly
waited until it is visible, rather than assuming that it is visible as
soon as it appears in the DOM.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Adjust acceptance tests to changes in notifications markup
Since nextcloud/notifications#1178 each notification in the list is a
"<li>" rather than a "<div>".
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Update images in scripts to run local tests in Docker
PHP 7.3 support was dropped for Nextcloud 24. The Docker images are
updated to the same images used for integration and acceptance tests in
CI.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Add automatic handling of "ElementNotInteractable" exceptions
In the WebDriver protocol, when a command fails because it can not
interact with the target element, an "element not interactable" error is
generated. It can be a transitive issue (for example, due to an
animation), so when the error is received the command should be tried
again, just like done, for example, with "ElementNotVisible" exceptions.
However, the last version of the "instaclick/php-webdriver" library
compatible with the Selenium Driver of Mink did not support yet that
WebDriver error. And even if Chrome is run using the old protocol an
unknown "element not interactable" error can be received anyway in some
cases. When an unknown error is received by the
"instaclick/php-webdriver" library it is thrown as a generic Exception
so, until the library can be updated, the message of generic exceptions
is checked and the command is retried if it matched.
For the time being "element not interactable" errors are handled like
"ElementNotVisible" exceptions; this may need to change once the error
is better understood.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
The acceptance tests used the last Selenium 2 Docker container
available, which provides a rather old Firefox version (Firefox 47).
Nevertheless, despite some rendering issues, most things still worked as
expected due to the JavaScript files being built with support for older
browsers. However, now that support for Internet Explorer 11 and older
browsers will be dropped things could start to fail, so a newer browser
(and thus a newer Selenium version) should be used in the acceptance
tests.
Selenium has been standardized by the W3C, and the protocol to
communicate between the Selenium server and the browser has changed due
to that. Firefox >= 48 only supports the new W3C protocol, but the
Selenium driver for Mink does not support it yet.
The old protocol can still be used in recent Chromium/Chrome versions by
explicitly forcing it, so for the time being the acceptance tests will
need to be run on Chrome instead (although Firefox provides some
interesting features like the fake streams that would be needed to test
calls in Talk, so they should be moved again to Firefox once possible).
Finally, the default shm size of Docker is 64 MiB. This does not seem
enough to run newer Chrome releases and causes the browser to randomly
crash during the tests ("unknown error: session deleted because of page
crash" is shown in the logs). Due to this "disable-dev-shm-usage" needs
to be used so Chrome writes shared memory files into "/tmp" instead of
"/dev/shm" (the default shm size of Docker could have been increased
instead using "docker run --shm-size...", but that seems to be
problematic when the container is run in current Drone releases).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Replace carriage return with WebDriver "ENTER" constant
When the value is set in some input fields a carriage return was sent to
simulate pressing the enter key and thus confirming the input. However,
different browsers use different keys (Firefox uses "\r", but Chrome
uses "\n"), so the carriage return was replaced with the WebDriver
"ENTER" constant which is common to both browsers.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Sending the "enter" key is not needed in those input fields that auto
save while the user is typing or when the focus is lost (which since
version 1.4.0 the Selenium driver for Mink is automatically done after
setting the value).
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>