‪TYPO3CMS  ‪main
PageTreeFilterCest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Facebook\WebDriver\WebDriverKeys;
24 
26 {
27  private string ‪$filterInputField = '#typo3-pagetree #typo3-pagetree-toolbar .search-input';
28  private string ‪$pageTreeSecondaryOptions = '#typo3-pagetree #typo3-pagetree-toolbar .dropdown-toggle';
29  private string ‪$pageTreeReloadButton = '#typo3-pagetree #typo3-pagetree-toolbar typo3-backend-icon[identifier=actions-refresh]';
30  private string ‪$inPageTree = '#typo3-pagetree-tree .nodes-list';
31 
32  public function ‪_before(‪ApplicationTester $I, ‪PageTree $pageTree): void
33  {
34  $I->useExistingSession('admin');
35  $I->click('List');
36 
37  $pageTree->‪openPath(['styleguide TCA demo']);
38  }
39 
40  public function ‪filterTreeForPage(‪ApplicationTester $I): void
41  {
42  // Filling the field seems racy - sometimes it is not set? We'll wait for two
43  // seconds before and after to see if this improves things for now.
44  $I->wait(2);
45  $I->fillField($this->filterInputField, 'Group');
46  $I->wait(2);
47  $this->‪waitForPageTreeLoad($I);
48  // [#91884] no Enter key press on purpose. The search should start by itself without additional Enter key press
49  // and this assertion makes sure the filter worked
50  $I->waitForElementNotVisible('//*[text()=\'inline expandsingle\']');
51 
52  $I->canSee('elements group', $this->inPageTree);
53  $I->canSee('inline mngroup', $this->inPageTree);
54 
55  // [#91883] this happens, when translated pages are also part of the result set
56  $I->amGoingTo('prove translated pages are not shown in the filtered page tree');
57  $I->cantSee('inline mngroup - language 3', $this->inPageTree);
58 
59  $I->click($this->pageTreeSecondaryOptions);
60  $I->click($this->pageTreeReloadButton);
61  $this->‪waitForPageTreeLoad($I);
62 
63  // [#91885] filter must still apply after page tree reload
64  $I->amGoingTo('prove the filter applies after page tree reload');
65  $I->cantSee('flex', $this->inPageTree);
66  $I->seeInField($this->filterInputField, 'Group');
67  }
68 
70  {
71  $I->fillField($this->filterInputField, 'Group');
72  $this->‪waitForPageTreeLoad($I);
73  $I->waitForElementNotVisible('//*[text()=\'inline expandsingle\']');
74 
75  $I->canSee('elements group', $this->inPageTree);
76  $I->canSee('inline mngroup', $this->inPageTree);
77 
78  $I->pressKey($this->filterInputField, WebDriverKeys::ESCAPE);
79  $this->‪waitForPageTreeLoad($I);
80 
81  $I->waitForElementVisible('//*[text()=\'inline expandsingle\']');
82  $I->canSee('elements group', $this->inPageTree);
83  $I->canSee('inline mngroup', $this->inPageTree);
84  }
85 
87  {
88  $I->fillField($this->filterInputField, 'Group');
89  $this->‪waitForPageTreeLoad($I);
90 
91  $I->canSee('elements group', $this->inPageTree);
92  $I->canSee('inline mngroup', $this->inPageTree);
93 
94  $this->‪waitForPageTreeLoad($I);
95  $I->waitForText('inline mn', 5);
96  $I->waitForElementClickable('//*[text()=\'inline mn\']');
97  $I->clickWithRightButton('//*[text()=\'inline mn\']');
98  $I->waitForElement('[data-callback-action="deleteRecord"]');
99  $I->click('[data-callback-action="deleteRecord"]', '#contentMenu0');
100 
101  // don't use $modalDialog->clickButtonInDialog due to too low timeout
102  $modalDialog->‪canSeeDialog();
103  $I->click('button[name="delete"]', ‪ModalDialog::$openedModalButtonContainerSelector);
104  $I->waitForElementNotVisible(‪ModalDialog::$openedModalSelector, 30);
105  $this->‪waitForPageTreeLoad($I);
106 
107  $I->canSee('elements group', $this->inPageTree);
108  $I->waitForElementNotVisible('//*[text()=\'inline mn\']', 20);
109  $I->waitForElementNotVisible('//*[text()=\'inline mngroup\']', 20);
110  $I->waitForElementNotVisible('//*[text()=\'inline expandsingle\']', 20);
111  }
112 
113  private function ‪waitForPageTreeLoad(‪ApplicationTester $I): void
114  {
115  $I->waitForElement('#typo3-pagetree-tree .nodes-list [role="treeitem"]', 10);
116  $I->waitForElementNotVisible('#typo3-pagetree .nodes-loader', 10);
117  }
118 }
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog\$openedModalSelector
‪static string $openedModalSelector
Definition: ModalDialog.php:30
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\deletingPageWithFilterAppliedRespectsFilterUponPageTreeReload
‪deletingPageWithFilterAppliedRespectsFilterUponPageTreeReload(ApplicationTester $I, ModalDialog $modalDialog)
Definition: PageTreeFilterCest.php:86
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\$inPageTree
‪string $inPageTree
Definition: PageTreeFilterCest.php:30
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree
Definition: PageCreationWithDragAndDropCest.php:18
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest
Definition: PageTreeFilterCest.php:26
‪TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester
Definition: ApplicationTester.php:28
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog\$openedModalButtonContainerSelector
‪static string $openedModalButtonContainerSelector
Definition: ModalDialog.php:37
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\_before
‪_before(ApplicationTester $I, PageTree $pageTree)
Definition: PageTreeFilterCest.php:32
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\waitForPageTreeLoad
‪waitForPageTreeLoad(ApplicationTester $I)
Definition: PageTreeFilterCest.php:113
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\$pageTreeSecondaryOptions
‪string $pageTreeSecondaryOptions
Definition: PageTreeFilterCest.php:28
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\AbstractTree\openPath
‪openPath(array $path)
Definition: AbstractTree.php:55
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\$filterInputField
‪string $filterInputField
Definition: PageTreeFilterCest.php:27
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\clearFilterReloadsPageTreeWithoutFilterApplied
‪clearFilterReloadsPageTreeWithoutFilterApplied(ApplicationTester $I)
Definition: PageTreeFilterCest.php:69
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog\canSeeDialog
‪canSeeDialog()
Definition: ModalDialog.php:68
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\filterTreeForPage
‪filterTreeForPage(ApplicationTester $I)
Definition: PageTreeFilterCest.php:40
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree
Definition: PageTree.php:26
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\$pageTreeReloadButton
‪string $pageTreeReloadButton
Definition: PageTreeFilterCest.php:29
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog
Definition: ModalDialog.php:24