From 754035cec0a1bc44ad3660d139ceed1eec018fd1 Mon Sep 17 00:00:00 2001 From: Artur Neumann Date: Wed, 15 Nov 2017 09:34:55 +0545 Subject: [PATCH] UI tests for upload feature --- .travis.yml | 34 ++++ tests/TestHelpers/WebDavHelper.php | 5 +- tests/travis/start_ui_tests.sh | 4 +- tests/ui/config/behat.yml | 10 ++ .../ui/features/bootstrap/FeatureContext.php | 18 +- tests/ui/features/bootstrap/FilesContext.php | 154 ++++++++++++++++-- tests/ui/features/bootstrap/LoginContext.php | 10 +- .../features/files/deleteFilesFolders.feature | 2 +- tests/ui/features/lib/FilesPage.php | 21 ++- .../lib/FilesPageElement/ConflictDialog.php | 67 ++++++++ .../lib/OwncloudPageElement/OCDialog.php | 31 ++++ .../moveFilesFolders/moveFiles.feature | 16 +- .../features/renameFiles/renameFiles.feature | 2 +- .../sharing/shareByPublicLink.feature | 2 +- .../trashbin/trashbinFilesFolders.feature | 2 +- tests/ui/features/upload/upload.feature | 49 ++++++ .../features/upload/uploadEdgecases.feature | 90 ++++++++++ tests/ui/filesForUpload/'single'quotes.txt | 9 + tests/ui/filesForUpload/0 | 9 + tests/ui/filesForUpload/data.tar.gz | Bin 0 -> 4361 bytes tests/ui/filesForUpload/data.zip | Bin 0 -> 4919 bytes tests/ui/filesForUpload/lorem-big.txt | 93 +++++++++++ tests/ui/filesForUpload/lorem.txt | 7 + .../ui/filesForUpload/new-'single'quotes.txt | 9 + tests/ui/filesForUpload/new-data.tar.gz | Bin 0 -> 4361 bytes tests/ui/filesForUpload/new-data.zip | Bin 0 -> 4919 bytes tests/ui/filesForUpload/new-lorem-big.txt | 93 +++++++++++ tests/ui/filesForUpload/new-lorem.txt | 9 + ...4ng\303\251 filename (duplicate #2 &).txt" | 9 + ...4ng\303\251 filename (duplicate #2 &).txt" | 9 + .../zzzz-must-be-last-file-in-folder.txt | 11 ++ ...at-the-end-of-the-folder-when-uploaded.txt | 11 ++ tests/ui/skeleton/0/for-git-commit | 1 + ...4ng\303\251 filename (duplicate #2 &).txt" | 0 ...4ng\303\251 filename (duplicate #2 &).txt" | 0 ...4ng\303\251 filename (duplicate #2 &).txt" | 0 ...4ng\303\251 filename (duplicate #2 &).txt" | 0 37 files changed, 755 insertions(+), 32 deletions(-) create mode 100644 tests/ui/features/lib/FilesPageElement/ConflictDialog.php create mode 100644 tests/ui/features/upload/upload.feature create mode 100644 tests/ui/features/upload/uploadEdgecases.feature create mode 100644 tests/ui/filesForUpload/'single'quotes.txt create mode 100644 tests/ui/filesForUpload/0 create mode 100644 tests/ui/filesForUpload/data.tar.gz create mode 100644 tests/ui/filesForUpload/data.zip create mode 100644 tests/ui/filesForUpload/lorem-big.txt create mode 100644 tests/ui/filesForUpload/lorem.txt create mode 100644 tests/ui/filesForUpload/new-'single'quotes.txt create mode 100644 tests/ui/filesForUpload/new-data.tar.gz create mode 100644 tests/ui/filesForUpload/new-data.zip create mode 100644 tests/ui/filesForUpload/new-lorem-big.txt create mode 100644 tests/ui/filesForUpload/new-lorem.txt create mode 100644 "tests/ui/filesForUpload/new-str\303\244ng\303\251 filename (duplicate #2 &).txt" create mode 100644 "tests/ui/filesForUpload/str\303\244ng\303\251 filename (duplicate #2 &).txt" create mode 100644 tests/ui/filesForUpload/zzzz-must-be-last-file-in-folder.txt create mode 100644 tests/ui/filesForUpload/zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt create mode 100644 tests/ui/skeleton/0/for-git-commit rename "tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2).txt" => "tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2 &).txt" (100%) rename "tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2).txt" => "tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2 &).txt" (100%) rename "tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2).txt" => "tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2 &).txt" (100%) rename "tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2).txt" => "tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2 &).txt" (100%) diff --git a/.travis.yml b/.travis.yml index 8f8fd7b95c47..91a0fb9effad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -103,6 +103,12 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest" BEHAT_SUITE="upload" PLATFORM="Windows 10" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true - php: 5.6 if: type = cron env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="other" PLATFORM="Windows 10" TEST_DAV=0 @@ -159,6 +165,13 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + if: type = cron + env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="upload" PLATFORM="Windows 10" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true - php: 5.6 env: DB=pgsql TC=litmus-v1 - php: 5.6 @@ -229,6 +242,13 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + if: type = cron + env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest-1" BEHAT_SUITE="upload" PLATFORM="Windows 10" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true - php: 5.6 if: type = cron env: DB=pgsql TC=selenium BROWSER="MicrosoftEdge" BROWSER_VERSION="latest" BEHAT_SUITE="other" PLATFORM="Windows 10" TEST_DAV=0 @@ -285,6 +305,13 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + if: type = cron + env: DB=pgsql TC=selenium BROWSER="MicrosoftEdge" BROWSER_VERSION="latest" BEHAT_SUITE="upload" PLATFORM="Windows 10" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true - php: 5.6 if: type = cron env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="other" PLATFORM="Windows 7" TEST_DAV=0 @@ -341,4 +368,11 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + if: type = cron + env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="upload" PLATFORM="Windows 7" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true fast_finish: true diff --git a/tests/TestHelpers/WebDavHelper.php b/tests/TestHelpers/WebDavHelper.php index dca845adeebb..e78918e62efe 100644 --- a/tests/TestHelpers/WebDavHelper.php +++ b/tests/TestHelpers/WebDavHelper.php @@ -103,6 +103,9 @@ public static function makeDavRequest( ) { $baseUrl = self::sanitizeUrl($baseUrl, true); $davPath = self::getDavPath($user, $davPathVersionToUse, $type); + //replace # and ? in the path, Guzzle will not encode them + $path = str_replace("#", "%23", $path); + $path = str_replace("?", "%3F", $path); $fullUrl = self::sanitizeUrl($baseUrl . $davPath . $path); $client = new GClient(); @@ -116,7 +119,7 @@ public static function makeDavRequest( $options['config'] = [ 'curl' => [ CURLOPT_INTERFACE => $sourceIpAddress ]]; } - + $request = $client->createRequest($method, $fullUrl, $options); if (!is_null($headers)) { foreach ($headers as $key => $value) { diff --git a/tests/travis/start_ui_tests.sh b/tests/travis/start_ui_tests.sh index 78f565666e16..ec5a4689951e 100755 --- a/tests/travis/start_ui_tests.sh +++ b/tests/travis/start_ui_tests.sh @@ -195,7 +195,8 @@ EXTRA_CAPABILITIES=$EXTRA_CAPABILITIES'"maxDuration":"3600"' #Set up personalized skeleton PREVIOUS_SKELETON_DIR=$($OCC --no-warnings config:system:get skeletondirectory) -$OCC config:system:set skeletondirectory --value="$(pwd)/tests/ui/skeleton" >/dev/null +export SKELETON_DIR=$(pwd)/tests/ui/skeleton +$OCC config:system:set skeletondirectory --value="$SKELETON_DIR" >/dev/null TEST_LOG_FILE=$(mktemp) @@ -204,6 +205,7 @@ export BEHAT_PARAMS='{"extensions" : {"Behat\\MinkExtension" : {"browser_name": export IPV4_URL export IPV6_URL export REMOTE_FED_BASE_URL +export FILES_FOR_UPLOAD="$(pwd)/tests/ui/filesForUpload/" lib/composer/bin/behat -c $BEHAT_YML $BEHAT_SUITE_OPTION $BEHAT_TAG_OPTION $BEHAT_TAGS $BEHAT_FEATURE -v 2>&1 | tee -a $TEST_LOG_FILE diff --git a/tests/ui/config/behat.yml b/tests/ui/config/behat.yml index 6a443fd77615..573b34ca5868 100644 --- a/tests/ui/config/behat.yml +++ b/tests/ui/config/behat.yml @@ -74,6 +74,16 @@ default: - FilesContext: - SharingContext: + upload: + paths: + - %paths.base%/../features/upload + context: *common_suite_context + contexts: + - FeatureContext: + - LoginContext: + - UsersContext: + - FilesContext: + restrictSharing: paths: - %paths.base%/../features/restrictSharing diff --git a/tests/ui/features/bootstrap/FeatureContext.php b/tests/ui/features/bootstrap/FeatureContext.php index e7f2328a0df1..98346d8e792e 100644 --- a/tests/ui/features/bootstrap/FeatureContext.php +++ b/tests/ui/features/bootstrap/FeatureContext.php @@ -43,7 +43,8 @@ class FeatureContext extends RawMinkContext implements Context { private $owncloudPage; private $loginPage; private $oldCSRFSetting = null; - + private $currentUser = null; + /** * * @var Page\OwncloudPage @@ -101,6 +102,21 @@ class FeatureContext extends RawMinkContext implements Context { ] ]; + /** + * @return string + */ + public function getCurrentUser() { + return $this->currentUser; + } + + /** + * @param string $currentUser + * @return void + */ + public function setCurrentUser($currentUser) { + $this->currentUser = $currentUser; + } + /** * FeatureContext constructor. * diff --git a/tests/ui/features/bootstrap/FilesContext.php b/tests/ui/features/bootstrap/FilesContext.php index edaef512f78f..dc3c24703a0f 100644 --- a/tests/ui/features/bootstrap/FilesContext.php +++ b/tests/ui/features/bootstrap/FilesContext.php @@ -28,6 +28,8 @@ use SensioLabs\Behat\PageObjectExtension\PageObject\Exception\ElementNotFoundException; use Page\TrashbinPage; use Page\OwncloudPage; +use Page\FilesPageElement\ConflictDialog; +use TestHelpers\DownloadHelper; require_once 'bootstrap.php'; @@ -38,7 +40,11 @@ class FilesContext extends RawMinkContext implements Context { private $filesPage; private $trashbinPage; - + /** + * + * @var ConflictDialog + */ + private $conflictDialog; /** * Table of all files and folders that should have been deleted, stored so * that other steps can use the list to check if the deletion happened correctly @@ -57,23 +63,36 @@ class FilesContext extends RawMinkContext implements Context { */ private $movedElementsTable = null; + /** + * variable to remember in which folder we are currently working + * + * @var string + */ + private $currentFolder = ""; + /** * * @var FeatureContext */ private $featureContext; - + private $uploadConflictDialogTitle = "file conflict"; + /** * FilesContext constructor. * * @param FilesPage $filesPage * @param TrashbinPage $trashbinPage + * @param ConflictDialog $conflictDialog + * @return void */ public function __construct( - FilesPage $filesPage, TrashbinPage $trashbinPage + FilesPage $filesPage, + TrashbinPage $trashbinPage, + ConflictDialog $conflictDialog ) { $this->trashbinPage = $trashbinPage; $this->filesPage = $filesPage; + $this->conflictDialog = $conflictDialog; } /** @@ -333,6 +352,51 @@ public function iBatchMoveTheseFilesIntoTheFolder( $this->movedElementsTable = $files; } + /** + * @When I upload the file :name + * @param string $name + * @return void + */ + public function iUploadTheFile($name) { + $this->filesPage->uploadFile($this->getSession(), $name); + } + + /** + * @When /^I choose to keep the (new|existing) files$/ + * @param string $choice + */ + public function choiceInUploadConflict($choice) { + $dialogs = $this->filesPage->getOcDialogs(); + foreach ($dialogs as $dialog) { + $isConflictDialog = strstr( + $dialog->getTitle(), $this->uploadConflictDialogTitle + ); + if ($isConflictDialog !== false) { + $this->conflictDialog->setElement($dialog->getOwnElement()); + break; + } + } + if ($choice === "new") { + $this->conflictDialog->keepNewFiles(); + } elseif ($choice === "existing") { + $this->conflictDialog->keepExistingFiles(); + } else { + throw new Exception("the choice can only be 'new' or 'existing'"); + } + + } + + /** + * @When I click the :label button + * @return void + */ + public function iClickTheButton($label) { + $dialogs = $this->filesPage->getOcDialogs(); + $dialog = end($dialogs); + $this->conflictDialog->setElement($dialog->getOwnElement()); + $this->conflictDialog->clickButton($this->getSession(), $label); + } + /** * @Then /^the (?:deleted|moved) elements should (not|)\s?be listed$/ * @param string $shouldOrNot @@ -411,33 +475,42 @@ public function iMarkTheseFilesForBatchAction(TableNode $files) { } /** - * @When /^I open the (trashbin|)\s?(?:file|folder) ((?:'[^']*')|(?:"[^"]*"))$/ + * @When /^I open the (trashbin|)\s?(file|folder) ((?:'[^']*')|(?:"[^"]*"))$/ * @param string $typeOfFilesPage + * @param string $fileOrFolder * @param string $name enclosed in single or double quotes * @return void */ - public function iOpenTheFolderNamed($typeOfFilesPage, $name) { + public function iOpenTheFolderNamed($typeOfFilesPage, $fileOrFolder, $name) { // The capturing groups of the regex include the quotes at each // end of the captured string, so trim them. - $this->iOpenTheFolder($typeOfFilesPage, trim($name, $name[0])); + $this->iOpenTheFolder($typeOfFilesPage, $fileOrFolder, trim($name, $name[0])); } /** * @param string $typeOfFilesPage + * @param string $fileOrFolder * @param string|array $name * @return void */ - public function iOpenTheFolder($typeOfFilesPage, $name) { + public function iOpenTheFolder($typeOfFilesPage, $fileOrFolder, $name) { if ($typeOfFilesPage === "trashbin") { $this->iAmOnTheTrashbinPage(); } - + if ($fileOrFolder === "folder") { + if (is_array($name)) { + $this->currentFolder .= "/" . implode($name); + } else { + $this->currentFolder .= "/" . $name; + } + } $pageObject = $this->getCurrentPageObject(); $pageObject->waitTillPageIsLoaded($this->getSession()); $pageObject->openFile($name, $this->getSession()); $pageObject->waitTillPageIsLoaded($this->getSession()); } - + + /** * @Then /^the (?:file|folder) ((?:'[^']*')|(?:"[^"]*")) should (not|)\s?be listed\s?(?:in the |)(trashbin|)\s?(?:folder ((?:'[^']*')|(?:"[^"]*")))?$/ * @param string $name enclosed in single or double quotes @@ -475,16 +548,13 @@ public function checkIfFileFolderIsListed( ) { $should = ($shouldOrNot !== "not"); $message = null; - if ($typeOfFilesPage === "trashbin") { $this->iAmOnTheTrashbinPage(); } - $pageObject = $this->getCurrentPageObject(); $pageObject->waitTillPageIsLoaded($this->getSession()); - if ($folder !== "") { - $this->iOpenTheFolder($typeOfFilesPage, $folder); + $this->iOpenTheFolder($typeOfFilesPage, "folder", $folder); } try { @@ -494,14 +564,12 @@ public function checkIfFileFolderIsListed( $message = $e->getMessage(); $fileRowElement = null; } - if ($should) { PHPUnit_Framework_Assert::assertNotNull($fileRowElement); } else { if (is_array($name)) { $name = implode($name); } - PHPUnit_Framework_Assert::assertContains( "could not find file with the name '" . $name . "'", $message @@ -518,7 +586,7 @@ public function checkIfFileFolderIsListed( public function theMovedElementsShouldBeListedInTheFolder( $shouldOrNot, $folderName ) { - $this->iOpenTheFolder("", $folderName); + $this->iOpenTheFolder("", "folder", $folderName); $this->filesPage->waitTillPageIsLoaded($this->getSession()); $this->theDeletedMovedElementsShouldBeListed($shouldOrNot); } @@ -539,7 +607,7 @@ public function theFollowingFileFolderShouldBeListedInTheFollowingFolder( $folderNameParts[] = $namePartsRow['folder-name-parts']; $toBeListedTableArray[] = [$namePartsRow['item-name-parts']]; } - $this->iOpenTheFolder("", $folderNameParts); + $this->iOpenTheFolder("", "folder",$folderNameParts); $this->filesPage->waitTillPageIsLoaded($this->getSession()); $toBeListedTable = new TableNode($toBeListedTableArray); @@ -638,6 +706,58 @@ public function theFilesactionmenuShouldBeCompletelyVisibleAfterClickingOnIt() { } } + /** + * @Then /^the content of ((?:'[^']*')|(?:"[^"]*")) should be the same as the local ((?:'[^']*')|(?:"[^"]*"))$/ + * @param string $remoteFile enclosed in single or double quotes + * @param string $localFile enclosed in single or double quotes + * @return void + */ + public function theContentOfShouldBeTheSameAsTheLocal($remoteFile, $localFile) { + // The capturing group of the regex always includes the quotes at each + // end of the captured string, so trim them. + $remoteFile = $this->currentFolder . "/" . trim($remoteFile, $remoteFile[0]); + $localFile = getenv("FILES_FOR_UPLOAD") . "/" . trim($localFile, $localFile[0]); + $this->assertContentOfRemoteAndLocalFileIsSame($remoteFile, $localFile); + } + + /** + * @Then /^the content of ((?:'[^']*')|(?:"[^"]*")) should not have changed$/ + * @param string $fileName + * @return void + */ + public function theContentOfShouldNotHaveChanged($fileName) { + // The capturing group of the regex always includes the quotes at each + // end of the captured string, so trim them. + $fileName = trim($fileName, $fileName[0]); + $remoteFile = $this->currentFolder . "/" . $fileName; + $localFile = getenv("SKELETON_DIR") . "/" . $fileName; + $this->assertContentOfRemoteAndLocalFileIsSame($remoteFile, $localFile); + } + + /** + * Asserts that the content of a remote and a local file is the same + * uses the current user to download the remote file + * + * @param string $remoteFile + * @param string $localFile + * @return void + */ + private function assertContentOfRemoteAndLocalFileIsSame( + $remoteFile, $localFile + ) { + $username = $this->featureContext->getCurrentUser(); + $result = DownloadHelper::download( + $this->getMinkParameter("base_url"), + $username, + $this->featureContext->getUserPassword($username), + $remoteFile + ); + + PHPUnit_Framework_Assert::assertSame( + file_get_contents($localFile), $result->getBody()->getContents() + ); + } + /** * @BeforeScenario * This will run before EVERY scenario. diff --git a/tests/ui/features/bootstrap/LoginContext.php b/tests/ui/features/bootstrap/LoginContext.php index d7bc9210961e..3e4e63318f2c 100644 --- a/tests/ui/features/bootstrap/LoginContext.php +++ b/tests/ui/features/bootstrap/LoginContext.php @@ -36,6 +36,10 @@ class LoginContext extends RawMinkContext implements Context { private $loginPage; private $filesPage; private $expectedPage; + /** + * + * @var FeatureContext + */ private $featureContext; /** @@ -64,6 +68,7 @@ public function iAmOnTheLoginPage() { public function iLoginWithUsernameAndPassword($username, $password) { $this->filesPage = $this->loginPage->loginAs($username, $password); $this->filesPage->waitTillPageIsLoaded($this->getSession()); + $this->featureContext->setCurrentUser($username); } /** @@ -113,6 +118,7 @@ public function iLoginWithUsernameAndPasswordAfterRedirectFromThePage( str_replace(' ', '', ucwords($page)) . 'Page' ); $this->expectedPage->waitTillPageIsLoaded($this->getSession()); + $this->featureContext->setCurrentUser($username); } /** @@ -120,11 +126,13 @@ public function iLoginWithUsernameAndPasswordAfterRedirectFromThePage( * @return void */ public function iLoginAsARegularUserWithACorrectPassword() { + $username = $this->featureContext->getRegularUserName(); $this->filesPage = $this->loginPage->loginAs( - $this->featureContext->getRegularUserName(), + $username, $this->featureContext->getRegularUserPassword() ); $this->filesPage->waitTillPageIsLoaded($this->getSession()); + $this->featureContext->setCurrentUser($username); } /** diff --git a/tests/ui/features/files/deleteFilesFolders.feature b/tests/ui/features/files/deleteFilesFolders.feature index 3bc156f25581..f3503009be49 100644 --- a/tests/ui/features/files/deleteFilesFolders.feature +++ b/tests/ui/features/files/deleteFilesFolders.feature @@ -15,7 +15,7 @@ So that I can keep my filing system clean and tidy | simple-folder | | lorem.txt | | strängé नेपाली folder | - | strängé filename (duplicate #2).txt | + | strängé filename (duplicate #2 &).txt | Then the deleted elements should not be listed And the deleted elements should not be listed after a page reload diff --git a/tests/ui/features/lib/FilesPage.php b/tests/ui/features/lib/FilesPage.php index 622e3cea4536..06f5c017544b 100644 --- a/tests/ui/features/lib/FilesPage.php +++ b/tests/ui/features/lib/FilesPage.php @@ -43,7 +43,7 @@ class FilesPage extends FilesPageBasic { protected $newFileFolderButtonXpath = './/*[@id="controls"]//a[@class="button new"]'; protected $newFolderButtonXpath = './/div[contains(@class, "newFileMenu")]//a[@data-templatename="New folder"]'; protected $newFolderNameInputLabel = 'New folder'; - + protected $fileUploadInputId = "file_upload_start"; private $strForNormalFileName = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; /** @@ -134,6 +134,25 @@ public function createFolder($name = null) { return $name; } + /** + * + * @param Session $session + * @param string $name + * @return void + */ + public function uploadFile(Session $session, $name) { + $uploadField = $this->findById($this->fileUploadInputId); + if (is_null($uploadField)) { + throw new ElementNotFoundException( + __METHOD__ . + " id $this->fileUploadInputId " . + "could not find file upload input field" + ); + } + $uploadField->attachFile(getenv("FILES_FOR_UPLOAD") . $name); + $this->waitForAjaxCallsToStartAndFinish($session); + } + /** * opens the sharing dialog for a given file/folder name * returns the SharingDialog Object diff --git a/tests/ui/features/lib/FilesPageElement/ConflictDialog.php b/tests/ui/features/lib/FilesPageElement/ConflictDialog.php new file mode 100644 index 000000000000..44dbb661599d --- /dev/null +++ b/tests/ui/features/lib/FilesPageElement/ConflictDialog.php @@ -0,0 +1,67 @@ + + * @copyright 2017 Artur Neumann artur@jankaritech.com + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, + * as published by the Free Software Foundation; + * either version 3 of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * + */ + +namespace Page\FilesPageElement; + +use Behat\Mink\Exception\ElementNotFoundException; +use Page\OwncloudPageElement\OCDialog; + +class ConflictDialog extends OCDialog { + private $keepNewFilesCheckXpath = "//label[@for='checkbox-allnewfiles']"; + private $keepExistingFilesCheckXpath = "//label[@for='checkbox-allexistingfiles']"; + + /** + * takes the xpath and selects the option with that xpath + * + * @param string $xpath + * @throws ElementNotFoundException + * @return void + */ + private function keepFiles($xpath) { + $checkBox = $this->dialogElement->find("xpath", $xpath); + if ($checkBox === null) { + throw new ElementNotFoundException( + __METHOD__ . + " xpath $xpath " . + "could not find checkbox/label" + ); + } + $checkBox->click(); + } + + /** + * @throws ElementNotFoundException + * @return void + */ + public function keepExistingFiles() { + $this->keepFiles($this->keepExistingFilesCheckXpath); + } + + /** + * @throws ElementNotFoundException + * @return void + */ + public function keepNewFiles() { + $this->keepFiles($this->keepNewFilesCheckXpath); + } +} \ No newline at end of file diff --git a/tests/ui/features/lib/OwncloudPageElement/OCDialog.php b/tests/ui/features/lib/OwncloudPageElement/OCDialog.php index 83fe19e20290..895581b29197 100644 --- a/tests/ui/features/lib/OwncloudPageElement/OCDialog.php +++ b/tests/ui/features/lib/OwncloudPageElement/OCDialog.php @@ -40,6 +40,7 @@ class OCDialog extends OwncloudPage { protected $dialogElement; protected $titleClassXpath = ".//*[@class='oc-dialog-title']"; protected $contentClassXpath = ".//*[@class='oc-dialog-content']"; + protected $buttonByLabelXpath = "//button[.='%s']"; /** * the accept button, regardless of the label * @@ -60,6 +61,14 @@ public function setElement(NodeElement $dialogElement) { $this->dialogElement = $dialogElement; } + /** + * returns the Element that was set by setElement() + * + * @return \Behat\Mink\Element\NodeElement + */ + public function getOwnElement() { + return $this->dialogElement; + } /** * * @throws ElementNotFoundException @@ -115,5 +124,27 @@ public function accept(Session $session) { $primaryButton->click(); $this->waitForOutstandingAjaxCalls($session); } + + /** + * clicks the button with the given label + * + * @param Session $session + * @param string $label + * @return void + */ + public function clickButton(Session $session, $label) { + $button = $this->dialogElement->find( + "xpath", sprintf($this->buttonByLabelXpath, $label) + ); + if (is_null($button)) { + throw new ElementNotFoundException( + __METHOD__ . + " xpath " . sprintf($this->buttonByLabelXpath, $label) . + " could not find button with the given label" + ); + } + $button->click(); + $this->waitForOutstandingAjaxCalls($session); + } } \ No newline at end of file diff --git a/tests/ui/features/moveFilesFolders/moveFiles.feature b/tests/ui/features/moveFilesFolders/moveFiles.feature index d86f2a7ed0e4..65082d61bc48 100644 --- a/tests/ui/features/moveFilesFolders/moveFiles.feature +++ b/tests/ui/features/moveFilesFolders/moveFiles.feature @@ -19,21 +19,25 @@ So that I can organise my data structure Then the file "data.tar.gz" should not be listed But the file "data.tar.gz" should be listed in the folder "strängé नेपाली folder empty" When I am on the files page - And I move the file "strängé filename (duplicate #2).txt" into the folder "strängé नेपाली folder empty" - Then the file "strängé filename (duplicate #2).txt" should not be listed - But the file "strängé filename (duplicate #2).txt" should be listed in the folder "strängé नेपाली folder empty" + And I move the file "strängé filename (duplicate #2 &).txt" into the folder "strängé नेपाली folder empty" + Then the file "strängé filename (duplicate #2 &).txt" should not be listed + But the file "strängé filename (duplicate #2 &).txt" should be listed in the folder "strängé नेपाली folder empty" @skipOnFIREFOX47+ Scenario: move a file into a folder where a file with the same name already exists When I move the file "data.zip" into the folder "simple-folder" And I move the file "data.zip" into the folder "strängé नेपाली folder" - And I move the file "strängé filename (duplicate #2).txt" into the folder "strängé नेपाली folder" Then notifications should be displayed with the text |Could not move "data.zip", target exists| |Could not move "data.zip", target exists| - |Could not move "strängé filename (duplicate #2).txt", target exists| And the file "data.zip" should be listed - And the file "strängé filename (duplicate #2).txt" should be listed + + @skip @issue-29556 + Scenario: move a file into a folder where a file with the same name already exists + When I move the file "strängé filename (duplicate #2 &).txt" into the folder "strängé नेपाली folder" + Then notifications should be displayed with the text + |Could not move "strängé filename (duplicate #2 &).txt", target exists| + And the file "strängé filename (duplicate #2 &).txt" should be listed @skipOnFIREFOX47+ Scenario: Move multiple files at once diff --git a/tests/ui/features/renameFiles/renameFiles.feature b/tests/ui/features/renameFiles/renameFiles.feature index 6695086e7ec7..3e3eb20709df 100644 --- a/tests/ui/features/renameFiles/renameFiles.feature +++ b/tests/ui/features/renameFiles/renameFiles.feature @@ -27,7 +27,7 @@ So that I can organise my data structure Then the file should be listed Examples: |from_name |to_name | - |"strängé filename (duplicate #2).txt"|"strängé filename (duplicate #3).txt"| + |"strängé filename (duplicate #2 &).txt"|"strängé filename (duplicate #3).txt"| |"'single'quotes.txt" |"single-quotes.txt" | Scenario: Rename a file using special characters and check its existence after page reload diff --git a/tests/ui/features/sharing/shareByPublicLink.feature b/tests/ui/features/sharing/shareByPublicLink.feature index 6e2a15e9e807..cadf65fdc30d 100644 --- a/tests/ui/features/sharing/shareByPublicLink.feature +++ b/tests/ui/features/sharing/shareByPublicLink.feature @@ -28,7 +28,7 @@ So that public sharing is limited according to organization policy | name | | simple-empty-folder | | lorem.txt | - | strängé filename (duplicate #2).txt | + | strängé filename (duplicate #2 &).txt | | zzzz-must-be-last-file-in-folder.txt | Then the deleted elements should not be listed And the deleted elements should not be listed after a page reload diff --git a/tests/ui/features/trashbin/trashbinFilesFolders.feature b/tests/ui/features/trashbin/trashbinFilesFolders.feature index c5211e015712..9a473a886c9b 100644 --- a/tests/ui/features/trashbin/trashbinFilesFolders.feature +++ b/tests/ui/features/trashbin/trashbinFilesFolders.feature @@ -15,7 +15,7 @@ Feature: files and folders exist in the trashbin after being deleted | simple-folder | | lorem.txt | | strängé नेपाली folder | - | strängé filename (duplicate #2).txt | + | strängé filename (duplicate #2 &).txt | Then the deleted elements should be listed in the trashbin And the file "lorem.txt" should be listed in the trashbin folder "simple-folder" diff --git a/tests/ui/features/upload/upload.feature b/tests/ui/features/upload/upload.feature new file mode 100644 index 000000000000..9efb99b431e9 --- /dev/null +++ b/tests/ui/features/upload/upload.feature @@ -0,0 +1,49 @@ +@insulated +Feature: File Upload + +As a user +I would like to be able to upload files via the WebUI +So that I can store files in ownCloud + + Background: + Given these users exist: + |username|password|displayname|email | + |user1 |1234 |User One |u1@oc.com.np| + And I am on the login page + And I login with username "user1" and password "1234" + + Scenario: simple upload of a file that does not exist before + When I upload the file "new-lorem.txt" + Then the file "new-lorem.txt" should be listed + And the content of "new-lorem.txt" should be the same as the local "new-lorem.txt" + + Scenario: upload a new file into a sub folder + When I open the folder "simple-folder" + And I upload the file "new-lorem.txt" + Then the file "new-lorem.txt" should be listed + And the content of "new-lorem.txt" should be the same as the local "new-lorem.txt" + + Scenario: overwrite an existing file + When I upload the file "lorem.txt" + And I choose to keep the new files + And I click the "Continue" button + Then the file "lorem.txt" should be listed + And the content of "lorem.txt" should be the same as the local "lorem.txt" + But the file "lorem (2).txt" should not be listed + + Scenario: keep new and existing file + When I upload the file "lorem.txt" + And I choose to keep the new files + And I choose to keep the existing files + And I click the "Continue" button + Then the file "lorem.txt" should be listed + And the content of "lorem.txt" should not have changed + And the file "lorem (2).txt" should be listed + And the content of "lorem (2).txt" should be the same as the local "lorem.txt" + + Scenario: cancel conflict dialog + When I upload the file "lorem.txt" + And I click the "Cancel" button + Then the file "lorem.txt" should be listed + And the content of "lorem.txt" should not have changed + And the file "lorem (2).txt" should not be listed \ No newline at end of file diff --git a/tests/ui/features/upload/uploadEdgecases.feature b/tests/ui/features/upload/uploadEdgecases.feature new file mode 100644 index 000000000000..86b274499596 --- /dev/null +++ b/tests/ui/features/upload/uploadEdgecases.feature @@ -0,0 +1,90 @@ +@insulated +Feature: File Upload + +As a QA engineer +I would like to test uploads of all kind of funny filenames via the WebUI + +These tests are written in a way that multiple file names are tested in one scenario +that is not academically correct but saves a lot of time + + Background: + Given these users exist: + |username|password|displayname|email | + |user1 |1234 |User One |u1@oc.com.np| + And I am on the login page + And I login with username "user1" and password "1234" + + Scenario: simple upload of a file that does not exist before + When I upload the file "new-'single'quotes.txt" + Then the file "new-'single'quotes.txt" should be listed + And the content of "new-'single'quotes.txt" should be the same as the local "new-'single'quotes.txt" + When I upload the file "new-strängé filename (duplicate #2 &).txt" + Then the file "new-strängé filename (duplicate #2 &).txt" should be listed + And the content of "new-strängé filename (duplicate #2 &).txt" should be the same as the local "new-strängé filename (duplicate #2 &).txt" + When I upload the file "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" + Then the file "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" should be listed + And the content of "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" should be the same as the local "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" + + Scenario Outline: upload a new file into a sub folder + When I open the folder + When I upload the file "0" + Then the file "0" should be listed + And the content of "0" should be the same as the local "0" + When I upload the file "new-'single'quotes.txt" + Then the file "new-'single'quotes.txt" should be listed + And the content of "new-'single'quotes.txt" should be the same as the local "new-'single'quotes.txt" + When I upload the file "new-strängé filename (duplicate #2 &).txt" + Then the file "new-strängé filename (duplicate #2 &).txt" should be listed + And the content of "new-strängé filename (duplicate #2 &).txt" should be the same as the local "new-strängé filename (duplicate #2 &).txt" + When I upload the file "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" + Then the file "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" should be listed + And the content of "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" should be the same as the local "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" + Examples: + | folder-to-upload-to | + | "0" | + | "'single'quotes" | + | "strängé नेपाली folder" | + + Scenario: overwrite an existing file + When I upload the file "'single'quotes.txt" + And I choose to keep the new files + And I click the "Continue" button + Then the file "'single'quotes.txt" should be listed + And the content of "'single'quotes.txt" should be the same as the local "'single'quotes.txt" + When I upload the file "strängé filename (duplicate #2 &).txt" + And I choose to keep the new files + And I click the "Continue" button + Then the file "strängé filename (duplicate #2 &).txt" should be listed + And the content of "strängé filename (duplicate #2 &).txt" should be the same as the local "strängé filename (duplicate #2 &).txt" + When I upload the file "zzzz-must-be-last-file-in-folder.txt" + And I choose to keep the new files + And I click the "Continue" button + Then the file "zzzz-must-be-last-file-in-folder.txt" should be listed + And the content of "zzzz-must-be-last-file-in-folder.txt" should be the same as the local "zzzz-must-be-last-file-in-folder.txt" + + Scenario: keep new and existing file + When I upload the file "'single'quotes.txt" + And I choose to keep the new files + And I choose to keep the existing files + And I click the "Continue" button + Then the file "'single'quotes.txt" should be listed + And the content of "'single'quotes.txt" should not have changed + And the file "'single'quotes (2).txt" should be listed + And the content of "'single'quotes (2).txt" should be the same as the local "'single'quotes.txt" + When I upload the file "strängé filename (duplicate #2 &).txt" + And I choose to keep the new files + And I choose to keep the existing files + And I click the "Continue" button + Then the file "strängé filename (duplicate #2 &).txt" should be listed + And the content of "strängé filename (duplicate #2 &).txt" should not have changed + And the file "strängé filename (duplicate #2 &) (2).txt" should be listed + And the content of "strängé filename (duplicate #2 &) (2).txt" should be the same as the local "strängé filename (duplicate #2 &).txt" + + When I upload the file "zzzz-must-be-last-file-in-folder.txt" + And I choose to keep the new files + And I choose to keep the existing files + And I click the "Continue" button + Then the file "zzzz-must-be-last-file-in-folder.txt" should be listed + And the content of "zzzz-must-be-last-file-in-folder.txt" should not have changed + And the file "zzzz-must-be-last-file-in-folder (2).txt" should be listed + And the content of "zzzz-must-be-last-file-in-folder (2).txt" should be the same as the local "zzzz-must-be-last-file-in-folder.txt" \ No newline at end of file diff --git a/tests/ui/filesForUpload/'single'quotes.txt b/tests/ui/filesForUpload/'single'quotes.txt new file mode 100644 index 000000000000..96abcb4f020b --- /dev/null +++ b/tests/ui/filesForUpload/'single'quotes.txt @@ -0,0 +1,9 @@ +a file with a single quote i its name + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/0 b/tests/ui/filesForUpload/0 new file mode 100644 index 000000000000..81f2343500b3 --- /dev/null +++ b/tests/ui/filesForUpload/0 @@ -0,0 +1,9 @@ +a file called "0" + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/data.tar.gz b/tests/ui/filesForUpload/data.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..05c74a335f044fcf0cb12dc0b83e979222ee8765 GIT binary patch literal 4361 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 D{Bx!& literal 0 HcmV?d00001 diff --git a/tests/ui/filesForUpload/data.zip b/tests/ui/filesForUpload/data.zip new file mode 100644 index 0000000000000000000000000000000000000000..d79780eada8fd501a1ffa6fa36f28b7e4f49ca89 GIT binary patch literal 4919 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 L#?>%SeYyJ=;ik{^ literal 0 HcmV?d00001 diff --git a/tests/ui/filesForUpload/lorem-big.txt b/tests/ui/filesForUpload/lorem-big.txt new file mode 100644 index 000000000000..7c3df7df5150 --- /dev/null +++ b/tests/ui/filesForUpload/lorem-big.txt @@ -0,0 +1,93 @@ +a big lorem file + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/lorem.txt b/tests/ui/filesForUpload/lorem.txt new file mode 100644 index 000000000000..9d3b7a654c16 --- /dev/null +++ b/tests/ui/filesForUpload/lorem.txt @@ -0,0 +1,7 @@ +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/new-'single'quotes.txt b/tests/ui/filesForUpload/new-'single'quotes.txt new file mode 100644 index 000000000000..603f2187aaea --- /dev/null +++ b/tests/ui/filesForUpload/new-'single'quotes.txt @@ -0,0 +1,9 @@ +a file with a single quote i its name, but different to the original one + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/new-data.tar.gz b/tests/ui/filesForUpload/new-data.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..05c74a335f044fcf0cb12dc0b83e979222ee8765 GIT binary patch literal 4361 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 D{Bx!& literal 0 HcmV?d00001 diff --git a/tests/ui/filesForUpload/new-data.zip b/tests/ui/filesForUpload/new-data.zip new file mode 100644 index 0000000000000000000000000000000000000000..d79780eada8fd501a1ffa6fa36f28b7e4f49ca89 GIT binary patch literal 4919 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 L#?>%SeYyJ=;ik{^ literal 0 HcmV?d00001 diff --git a/tests/ui/filesForUpload/new-lorem-big.txt b/tests/ui/filesForUpload/new-lorem-big.txt new file mode 100644 index 000000000000..2c1c631e0308 --- /dev/null +++ b/tests/ui/filesForUpload/new-lorem-big.txt @@ -0,0 +1,93 @@ +a big lorem file but different to the original one + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/new-lorem.txt b/tests/ui/filesForUpload/new-lorem.txt new file mode 100644 index 000000000000..b935db537dd6 --- /dev/null +++ b/tests/ui/filesForUpload/new-lorem.txt @@ -0,0 +1,9 @@ +lorem file that is different from the original one + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git "a/tests/ui/filesForUpload/new-str\303\244ng\303\251 filename (duplicate #2 &).txt" "b/tests/ui/filesForUpload/new-str\303\244ng\303\251 filename (duplicate #2 &).txt" new file mode 100644 index 000000000000..ac6c70ca53fe --- /dev/null +++ "b/tests/ui/filesForUpload/new-str\303\244ng\303\251 filename (duplicate #2 &).txt" @@ -0,0 +1,9 @@ +a file with funny characters in the file name but different from the original one + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git "a/tests/ui/filesForUpload/str\303\244ng\303\251 filename (duplicate #2 &).txt" "b/tests/ui/filesForUpload/str\303\244ng\303\251 filename (duplicate #2 &).txt" new file mode 100644 index 000000000000..a771bf79ea6d --- /dev/null +++ "b/tests/ui/filesForUpload/str\303\244ng\303\251 filename (duplicate #2 &).txt" @@ -0,0 +1,9 @@ +a file with funny characters in the file name + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/zzzz-must-be-last-file-in-folder.txt b/tests/ui/filesForUpload/zzzz-must-be-last-file-in-folder.txt new file mode 100644 index 000000000000..dcc19d17f8a8 --- /dev/null +++ b/tests/ui/filesForUpload/zzzz-must-be-last-file-in-folder.txt @@ -0,0 +1,11 @@ +This must be the last skeleton file in this folder, when sorted alphabetically. +Tests for performing actions on the last file in the folder try to find and use +this file name. + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt b/tests/ui/filesForUpload/zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt new file mode 100644 index 000000000000..1db21f1fb9be --- /dev/null +++ b/tests/ui/filesForUpload/zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt @@ -0,0 +1,11 @@ +This file has a name so it would be the last after the upload, when sorted alphabetically. +Tests for performing actions on the last file in the folder try to find and use +this file name. + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/skeleton/0/for-git-commit b/tests/ui/skeleton/0/for-git-commit new file mode 100644 index 000000000000..86459fd55043 --- /dev/null +++ b/tests/ui/skeleton/0/for-git-commit @@ -0,0 +1 @@ +this file is only here because git does not allow to commit empty folders \ No newline at end of file diff --git "a/tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2).txt" "b/tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2 &).txt" similarity index 100% rename from "tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2).txt" rename to "tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2 &).txt" diff --git "a/tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2).txt" "b/tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2 &).txt" similarity index 100% rename from "tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2).txt" rename to "tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2 &).txt" diff --git "a/tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2).txt" "b/tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2 &).txt" similarity index 100% rename from "tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2).txt" rename to "tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2 &).txt" diff --git "a/tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2).txt" "b/tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2 &).txt" similarity index 100% rename from "tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2).txt" rename to "tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2 &).txt"