| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | 
							- <?php
 
- namespace Drupal\Tests;
 
- /**
 
-  * Provides helper methods for the requirements page.
 
-  */
 
- trait RequirementsPageTrait {
 
-   /**
 
-    * Handles the update requirements page.
 
-    */
 
-   protected function updateRequirementsProblem() {
 
-     // Assert a warning is shown on older test environments.
 
-     $links = $this->getSession()->getPage()->findAll('named', ['link', 'try again']);
 
-     if ($links && version_compare(phpversion(), DRUPAL_MINIMUM_SUPPORTED_PHP) < 0) {
 
-       $this->assertNoText('Errors found');
 
-       $this->assertWarningSummaries(['PHP']);
 
-       $this->clickLink('try again');
 
-       $this->checkForMetaRefresh();
 
-     }
 
-   }
 
-   /**
 
-    * Continues installation when the expected warnings are found.
 
-    *
 
-    * This function is no longer called by any core test, but it is retained for
 
-    * use by contrib/custom tests. It is not deprecated, because it remains the
 
-    * recommended function to call for its purpose.
 
-    *
 
-    * @param string[] $expected_warnings
 
-    *   A list of warning summaries to expect on the requirements screen (e.g.
 
-    *   'PHP', 'PHP OPcode caching', etc.). If only the expected warnings
 
-    *   are found, the test will click the "continue anyway" link to go to the
 
-    *   next screen of the installer. If an expected warning is not found, or if
 
-    *   a warning not in the list is present, a fail is raised.
 
-    */
 
-   protected function continueOnExpectedWarnings($expected_warnings = []) {
 
-     $this->assertNoText('Errors found');
 
-     $this->assertWarningSummaries($expected_warnings);
 
-     $this->clickLink('continue anyway');
 
-     $this->checkForMetaRefresh();
 
-   }
 
-   /**
 
-    * Assert the given warning summaries are present on the page.
 
-    *
 
-    * If an expected warning is not found, or if a warning not in the list is
 
-    * present, a fail is raised.
 
-    *
 
-    * @param string[] $warning_summaries
 
-    *   A list of warning summaries to expect on the requirements screen (e.g.
 
-    *   'PHP', 'PHP OPcode caching', etc.).
 
-    */
 
-   protected function assertWarningSummaries(array $warning_summaries) {
 
-     // Allow only details elements that are directly after the warning header
 
-     // or each other. There is no guaranteed wrapper we can rely on across
 
-     // distributions. When there are multiple warnings, the selectors will be:
 
-     // - h3#warning+details summary
 
-     // - h3#warning+details+details summary
 
-     // - etc.
 
-     // We add one more selector than expected warnings to confirm that there
 
-     // isn't any other warning before clicking the link.
 
-     // @todo Make this more reliable in
 
-     //   https://www.drupal.org/project/drupal/issues/2927345.
 
-     $selectors = [];
 
-     for ($i = 0; $i <= count($warning_summaries); $i++) {
 
-       $selectors[] = 'h3#warning' . implode('', array_fill(0, $i + 1, '+details')) . ' summary';
 
-     }
 
-     $warning_elements = $this->cssSelect(implode(', ', $selectors));
 
-     // Confirm that there are only the expected warnings.
 
-     $warnings = [];
 
-     foreach ($warning_elements as $warning) {
 
-       $warnings[] = trim($warning->getText());
 
-     }
 
-     $this->assertEquals($warning_summaries, $warnings);
 
-   }
 
- }
 
 
  |