‪TYPO3CMS  ‪main
ContentElementsCest.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\Remote\RemoteWebDriver;
23 
25 {
26  private string ‪$sidebar = '.sidebar.list-group';
27 
28  public function ‪_before(‪ApplicationTester $I, ‪PageTree $pageTree): void
29  {
30  $I->useExistingSession('admin');
31  $I->click('Page');
32  $pageTree->‪openPath(['styleguide frontend demo']);
33  $I->switchToContentFrame();
34  $I->waitForElementVisible('select[name=actionMenu]');
35  $I->selectOption('select[name=actionMenu]', 'Layout');
36  $I->waitForElementVisible('.t3js-module-docheader-bar a[title="View webpage"]');
37  $I->wait(1);
38  $I->click('.t3js-module-docheader-bar a[title="View webpage"]');
39  $I->wait(1);
40  $I->executeInSelenium(static function (RemoteWebDriver $webdriver) {
41  $handles = $webdriver->getWindowHandles();
42  $lastWindow = end($handles);
43  $webdriver->switchTo()->window($lastWindow);
44  });
45  $I->wait(1);
46  $I->see('TYPO3 Styleguide Frontend', '.content');
47  }
48 
49  public function ‪_after(‪ApplicationTester $I): void
50  {
51  // Close FE tab again and switch to BE to avoid side effects
52  $I->executeInSelenium(static function (RemoteWebDriver $webdriver) {
53  $handles = $webdriver->getWindowHandles();
54  // Avoid closing the main backend tab (holds the webdriver session) if the test failed to open the frontend tab
55  // (All subsequent tests would fail with "[Facebook\WebDriver\Exception\InvalidSessionIdException] invalid session id"
56  if (count($handles) > 1) {
57  $webdriver->close();
58  $firstWindow = current($handles);
59  $webdriver->switchTo()->window($firstWindow);
60  }
61  });
62  }
63 
64  private function ‪contentElementsDataProvider(): array
65  {
66  return [
67  [
68  'link' => 'bullets',
69  'seeElement' => ['.ce-bullets'],
70  'see' => [
71  'Another bullet list',
72  'A bullet list',
73  ],
74  ],
75  [
76  'link' => 'div',
77  'seeElement' => ['hr.ce-div'],
78  ],
79  [
80  'link' => 'header',
81  'seeElement' => ['.frame-type-header'],
82  'see' => [
83  'Bacon ipsum dolor sit strong amet capicola jerky pork chop rump shoulder shank. Shankle strip steak pig salami link.',
84  ],
85  ],
86  [
87  'link' => 'text',
88  'seeElement' => ['.frame-type-text', '.content.col a'],
89  'see' => [
90  'Bacon ipsum dolor sit strong amet capicola jerky pork chop rump shoulder shank. Shankle strip steak pig salami link.',
91  ],
92  ],
93  [
94  'link' => 'textpic',
95  'seeElement' => ['.frame-type-textpic', '.content.col a', '.ce-gallery img'],
96  'see' => [
97  'Bacon ipsum dolor sit strong amet capicola jerky pork chop rump shoulder shank. Shankle strip steak pig salami link.',
98  ],
99  ],
100  [
101  'link' => 'textmedia',
102  'seeElement' => ['.frame-type-textmedia', '.content.col a', '.ce-gallery img'],
103  'see' => [
104  'Bacon ipsum dolor sit strong amet capicola jerky pork chop rump shoulder shank. Shankle strip steak pig salami link.',
105  ],
106  ],
107  [
108  'link' => 'image',
109  'seeElement' => ['.frame-type-image', '.ce-gallery img'],
110  'see' => [
111  'Bacon ipsum dolor sit strong amet capicola jerky pork chop rump shoulder shank. Shankle strip steak pig salami link.',
112  ],
113  ],
114  [
115  'link' => 'html',
116  'seeElement' => ['.frame-type-html', '.content.col a', '.content.col strong'],
117  'see' => [
118  'Bacon ipsum dolor sit strong amet capicola jerky pork chop rump shoulder shank. Shankle strip steak pig salami link.',
119  ],
120  ],
121  [
122  'link' => 'table',
123  'seeElement' => ['.frame-type-table', 'table.table'],
124  'see' => [
125  'row4 col4',
126  ],
127  ],
128  [
129  'link' => 'shortcut',
130  'seeElement' => [
131  '.frame-type-shortcut',
132  '.content.col a',
133  ],
134  'see' => [
135  'Bacon ipsum dolor sit strong amet capicola jerky pork chop rump shoulder shank. Shankle strip steak pig salami link.',
136  ],
137  ],
138  [
139  'link' => 'uploads',
140  'seeElement' => [
141  '.frame-type-uploads',
142  '.ce-uploads',
143  ],
144  'see' => [
145  'bus_lane.jpg',
146  'telephone_box.jpg',
147  'underground.jpg',
148  ],
149  ],
150  [
151  'link' => 'menu_categorized_pages',
152  'seeElement' => [
153  '.frame-type-menu_categorized_pages ul li',
154  ],
155  'see' => [
156  'Menu categorized pages',
157  ],
158  ],
159  [
160  'link' => 'menu_categorized_content',
161  'seeElement' => [
162  '.frame-type-menu_categorized_content ul li',
163  ],
164  'see' => [
165  'Menu categorized content',
166  ],
167  ],
168  [
169  'link' => 'menu_pages',
170  'seeElement' => [
171  '.frame-type-menu_pages ul li',
172  ],
173  'see' => [
174  'Menu pages',
175  ],
176  ],
177  [
178  'link' => 'menu_subpages',
179  'seeElement' => [
180  '.frame-type-menu_subpages ul li',
181  ],
182  'see' => [
183  'Menu subpages',
184  ],
185  ],
186  [
187  'link' => 'menu_sitemap',
188  'seeElement' => [
189  '.frame-type-menu_sitemap ul li',
190  ],
191  'see' => [
192  'Menu sitemap',
193  ],
194  ],
195  [
196  'link' => 'menu_section',
197  'seeElement' => [
198  '.frame-type-menu_section ul ul li',
199  ],
200  'see' => [
201  'Menu section',
202  ],
203  ],
204  [
205  'link' => 'menu_abstract',
206  'seeElement' => [
207  '.frame-type-menu_abstract ul li a',
208  '.frame-type-menu_abstract ul li p',
209  ],
210  'see' => [
211  'Menu abstract',
212  ],
213  ],
214  [
215  'link' => 'menu_recently_updated',
216  'seeElement' => [
217  '.frame-type-menu_recently_updated ul li',
218  ],
219  'see' => [
220  'Menu recently updated',
221  ],
222  ],
223  [
224  'link' => 'menu_related_pages',
225  'seeElement' => [
226  '.frame-type-menu_related_pages ul li',
227  ],
228  'see' => [
229  'Menu related pages',
230  ],
231  ],
232  [
233  'link' => 'menu_section_pages',
234  'seeElement' => [
235  '.frame-type-menu_section_pages ul ul',
236  ],
237  'see' => [
238  'Menu section pages',
239  ],
240  ],
241  [
242  'link' => 'menu_sitemap_pages',
243  'seeElement' => [
244  '.frame-type-menu_sitemap_pages ul li',
245  ],
246  'see' => [
247  'Menu sitemap pages',
248  ],
249  ],
250  ];
251  }
252 
254  {
255  $I->see('styleguide frontend demo');
256  foreach ($this->‪contentElementsDataProvider() as $contentElement) {
257  $I->scrollTo('//a[contains(., "' . $contentElement['link'] . '")]');
258  $I->click($contentElement['link'], $this->sidebar);
259  foreach ($contentElement['seeElement'] ?? [] as $element) {
260  $I->seeElement($element);
261  }
262  foreach ($contentElement['see'] ?? [] as $text) {
263  $I->see($text, '.content.col');
264  }
265  }
266  }
267 }
‪TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend\ContentElementsCest\contentElementsDataProvider
‪contentElementsDataProvider()
Definition: ContentElementsCest.php:64
‪TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend\ContentElementsCest\_before
‪_before(ApplicationTester $I, PageTree $pageTree)
Definition: ContentElementsCest.php:28
‪TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend
Definition: ContentElementsCest.php:18
‪TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester
Definition: ApplicationTester.php:28
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\AbstractTree\openPath
‪openPath(array $path)
Definition: AbstractTree.php:55
‪TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend\ContentElementsCest\$sidebar
‪string $sidebar
Definition: ContentElementsCest.php:26
‪TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend\ContentElementsCest
Definition: ContentElementsCest.php:25
‪TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend\ContentElementsCest\seeAllContentElements
‪seeAllContentElements(ApplicationTester $I)
Definition: ContentElementsCest.php:253
‪TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree
Definition: PageTree.php:26
‪TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend\ContentElementsCest\_after
‪_after(ApplicationTester $I)
Definition: ContentElementsCest.php:49