Skip to content
Snippets Groups Projects
Unverified Commit 5d4c4b54 authored by Roeland Jago Douma's avatar Roeland Jago Douma Committed by GitHub
Browse files

Merge pull request #22481 from...

Merge pull request #22481 from nextcloud/fix-clicks-on-actions-menu-of-non-opaque-file-rows-in-acceptance-tests

Fix clicks on actions menu of non opaque file rows in acceptance tests
parents 6a40e968 034b7bd4
No related branches found
No related tags found
No related merge requests found
......@@ -387,7 +387,7 @@ class FileListContext implements Context, ActorAwareInterface {
* @Given I open the details view for :fileName
*/
public function iOpenTheDetailsViewFor($fileName) {
$this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName), 10)->click();
$this->openFileActionsMenuForFile($fileName);
$this->actor->find(self::detailsMenuItem(), 2)->click();
}
......@@ -396,7 +396,7 @@ class FileListContext implements Context, ActorAwareInterface {
* @Given I rename :fileName1 to :fileName2
*/
public function iRenameTo($fileName1, $fileName2) {
$this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName1), 10)->click();
$this->openFileActionsMenuForFile($fileName1);
$this->actor->find(self::renameMenuItem(), 2)->click();
......@@ -416,7 +416,7 @@ class FileListContext implements Context, ActorAwareInterface {
* @Given I start the move or copy operation for :fileName
*/
public function iStartTheMoveOrCopyOperationFor($fileName) {
$this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName), 10)->click();
$this->openFileActionsMenuForFile($fileName);
$this->actor->find(self::moveOrCopyMenuItem(), 2)->click();
}
......@@ -427,7 +427,7 @@ class FileListContext implements Context, ActorAwareInterface {
public function iMarkAsFavorite($fileName) {
$this->iSeeThatIsNotMarkedAsFavorite($fileName);
$this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName), 10)->click();
$this->openFileActionsMenuForFile($fileName);
$this->actor->find(self::addToFavoritesMenuItem(), 2)->click();
}
......@@ -438,7 +438,7 @@ class FileListContext implements Context, ActorAwareInterface {
public function iUnmarkAsFavorite($fileName) {
$this->iSeeThatIsMarkedAsFavorite($fileName);
$this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName), 10)->click();
$this->openFileActionsMenuForFile($fileName);
$this->actor->find(self::removeFromFavoritesMenuItem(), 2)->click();
}
......@@ -447,7 +447,7 @@ class FileListContext implements Context, ActorAwareInterface {
* @When I view :fileName in folder
*/
public function iViewInFolder($fileName) {
$this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName), 10)->click();
$this->openFileActionsMenuForFile($fileName);
$this->actor->find(self::viewFileInFolderMenuItem(), 2)->click();
}
......@@ -456,7 +456,7 @@ class FileListContext implements Context, ActorAwareInterface {
* @When I delete :fileName
*/
public function iDelete($fileName) {
$this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName), 10)->click();
$this->openFileActionsMenuForFile($fileName);
$this->actor->find(self::deleteMenuItem(), 2)->click();
}
......@@ -552,4 +552,34 @@ class FileListContext implements Context, ActorAwareInterface {
public function iSeeThatHasUnreadComments($fileName) {
PHPUnit_Framework_Assert::assertTrue($this->actor->find(self::commentActionForFile($this->fileListAncestor, $fileName), 10)->isVisible());
}
private function waitForRowForFileToBeFullyOpaque($fileName) {
$actor = $this->actor;
$fileRowXpathExpression = $this->actor->find(self::rowForFile($this->fileListAncestor, $fileName), 10)->getWrappedElement()->getXpath();
$fileRowIsFullyOpaqueCallback = function () use ($actor, $fileRowXpathExpression) {
$opacity = $actor->getSession()->evaluateScript("return window.getComputedStyle(document.evaluate(\"" . $fileRowXpathExpression . "\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue).opacity;");
if ($opacity === "1") {
return true;
}
return false;
};
if (!Utils::waitFor($fileRowIsFullyOpaqueCallback, $timeout = 2 * $this->actor->getFindTimeoutMultiplier(), $timeoutStep = 1)) {
PHPUnit_Framework_Assert::fail("The row for file $fileName in file list is not fully opaque after $timeout seconds");
}
}
private function openFileActionsMenuForFile($fileName) {
// When a row is added to the file list the opacity of the file row is
// animated from transparent to fully opaque. As the file actions menu
// is a descendant of the row but overflows it when the row is not fully
// opaque clicks on the menu entries "fall-through" and are received
// instead by the rows behind. Therefore it should be waited until the
// row of the file is fully opaque before using the menu.
$this->waitForRowForFileToBeFullyOpaque($fileName);
$this->actor->find(self::fileActionsMenuButtonForFile($this->fileListAncestor, $fileName), 10)->click();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment