‪TYPO3CMS  11.5
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  protected string ‪$filterInputField = '#typo3-pagetree #typo3-pagetree-toolbar .search-input';
28  protected string ‪$pageTreeSecondaryOptions = '#typo3-pagetree #typo3-pagetree-toolbar .dropdown-toggle';
29  protected string ‪$pageTreeReloadButton = '#typo3-pagetree #typo3-pagetree-toolbar typo3-backend-icon[identifier=actions-refresh]';
30  protected string ‪$inPageTree = '#typo3-pagetree-tree .nodes';
31 
32  public function ‪_before(‪ApplicationTester $I, ‪PageTree $pageTree): void
33  {
34  $I->useExistingSession('admin');
35  $I->click('List');
36 
37  $I->waitForElement('#typo3-pagetree-tree .nodes .node');
38  $pageTree->‪openPath(['styleguide TCA demo']);
39  $I->waitForElement('#typo3-pagetree-tree .nodes .node');
40  }
41 
45  public function ‪filterTreeForPage(‪ApplicationTester $I): void
46  {
47  // Filling the field seems racy - sometimes it is not set? We'll wait for two
48  // seconds before and after to see if this improves things for now.
49  $I->wait(2);
50  $I->fillField($this->filterInputField, 'Group');
51  $I->wait(2);
52  $this->‪waitForPageTreeLoad($I);
53  // [#91884] no Enter key press on purpose. The search should start by itself without additional Enter key press
54  // and this assertion makes sure the filter worked
55  $I->waitForElementNotVisible('//*[text()=\'inline expandsingle\']');
56 
57  $I->canSee('elements group', $this->inPageTree);
58  $I->canSee('inline mngroup', $this->inPageTree);
59 
60  // [#91883] this happens, when translated pages are also part of the result set
61  $I->amGoingTo('prove translated pages are not shown in the filtered page tree');
62  $I->cantSee('inline mngroup - language 3', $this->inPageTree);
63 
64  $I->click($this->pageTreeSecondaryOptions);
65  $I->click($this->pageTreeReloadButton);
66  $this->‪waitForPageTreeLoad($I);
67 
68  // [#91885] filter must still apply after page tree reload
69  $I->amGoingTo('prove the filter applies after page tree reload');
70  $I->cantSee('flex', $this->inPageTree);
71  $I->seeInField($this->filterInputField, 'Group');
72  }
73 
75  {
76  $I->fillField($this->filterInputField, 'Group');
77  $this->‪waitForPageTreeLoad($I);
78  $I->waitForElementNotVisible('//*[text()=\'inline expandsingle\']');
79 
80  $I->canSee('elements group', $this->inPageTree);
81  $I->canSee('inline mngroup', $this->inPageTree);
82 
83  $I->pressKey($this->filterInputField, WebDriverKeys::ESCAPE);
84  $this->‪waitForPageTreeLoad($I);
85 
86  $I->waitForElementVisible('//*[text()=\'inline expandsingle\']');
87  $I->canSee('elements group', $this->inPageTree);
88  $I->canSee('inline mngroup', $this->inPageTree);
89  }
90 
95  {
96  $I->fillField($this->filterInputField, 'Group');
97  $this->‪waitForPageTreeLoad($I);
98 
99  $I->canSee('elements group', $this->inPageTree);
100  $I->canSee('inline mngroup', $this->inPageTree);
101 
102  $this->‪waitForPageTreeLoad($I);
103  $I->waitForText('inline mn', 5);
104  $I->waitForElementClickable('//*[text()=\'inline mn\']');
105  $I->clickWithRightButton('//*[text()=\'inline mn\']');
106  $I->waitForElement('[data-callback-action="deleteRecord"]');
107  $I->click('[data-callback-action="deleteRecord"]', '#contentMenu0');
108 
109  // don't use $modalDialog->clickButtonInDialog due to too low timeout
110  $modalDialog->‪canSeeDialog();
111  $I->click('button[name="delete"]', ‪ModalDialog::$openedModalButtonContainerSelector);
112  $I->waitForElementNotVisible(‪ModalDialog::$openedModalSelector, 30);
113  $this->‪waitForPageTreeLoad($I);
114 
115  $I->canSee('elements group', $this->inPageTree);
116  $I->waitForElementNotVisible('//*[text()=\'inline mn\']');
117  $I->waitForElementNotVisible('//*[text()=\'inline mngroup\']');
118  $I->waitForElementNotVisible('//*[text()=\'inline expandsingle\']');
119  }
120 
121  protected function ‪clearPageTreeFilters(‪ApplicationTester $I): void
122  {
123  $I->pressKey($this->filterInputField, WebDriverKeys::ESCAPE);
124  $I->click($this->pageTreeSecondaryOptions);
125  $I->click($this->pageTreeReloadButton);
126  }
127 
128  protected function ‪waitForPageTreeLoad(‪ApplicationTester $I): void
129  {
130  $I->waitForElement('#typo3-pagetree-tree .nodes .node', 10);
131  $I->waitForElementNotVisible('#typo3-pagetree .svg-tree-loader', 10);
132  }
133 }
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog\$openedModalSelector
‪static string $openedModalSelector
Definition: ModalDialog.php:33
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\deletingPageWithFilterAppliedRespectsFilterUponPageTreeReload
‪deletingPageWithFilterAppliedRespectsFilterUponPageTreeReload(ApplicationTester $I, ModalDialog $modalDialog)
Definition: PageTreeFilterCest.php:94
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\$inPageTree
‪string $inPageTree
Definition: PageTreeFilterCest.php:30
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest
Definition: PageTreeFilterCest.php:26
‪TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester
Definition: ApplicationTester.php:27
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog\$openedModalButtonContainerSelector
‪static string $openedModalButtonContainerSelector
Definition: ModalDialog.php:40
‪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\clearPageTreeFilters
‪clearPageTreeFilters(ApplicationTester $I)
Definition: PageTreeFilterCest.php:121
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree\openPath
‪openPath(array $path)
Definition: PageTree.php:76
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\waitForPageTreeLoad
‪waitForPageTreeLoad(ApplicationTester $I)
Definition: PageTreeFilterCest.php:128
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\$pageTreeSecondaryOptions
‪string $pageTreeSecondaryOptions
Definition: PageTreeFilterCest.php:28
‪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:74
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog\canSeeDialog
‪canSeeDialog()
Definition: ModalDialog.php:73
‪TYPO3\CMS\Core\Tests\Acceptance\Application\PageTree\PageTreeFilterCest\filterTreeForPage
‪filterTreeForPage(ApplicationTester $I)
Definition: PageTreeFilterCest.php:45
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree
Definition: PageTree.php:31
‪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:27