function BigPipePreviewTest::testLazyLoaderPreview

Same name and namespace in other branches
  1. 11.x core/modules/big_pipe/tests/src/FunctionalJavascript/BigPipePreviewTest.php \Drupal\Tests\big_pipe\FunctionalJavascript\BigPipePreviewTest::testLazyLoaderPreview()

Test preview functionality within placeholders.

File

core/modules/big_pipe/tests/src/FunctionalJavascript/BigPipePreviewTest.php, line 34

Class

BigPipePreviewTest
Tests placeholder preview functionality.

Namespace

Drupal\Tests\big_pipe\FunctionalJavascript

Code

public function testLazyLoaderPreview() : void {
  $user = $this->drupalCreateUser([]);
  $display_name = $user->getDisplayName();
  $this->drupalLogin($user);
  $this->drupalGet('big_pipe_test_preview');
  // This test begins with the big_pipe_bypass_js module enabled, which blocks
  // Big Pipe's JavaScript from loading. Without that JavaScript, the
  // placeholder and previews are not replaced and we can reliably test their
  // presence.
  $this->assertSession()
    ->elementExists('css', '#placeholder-preview-twig-container [data-big-pipe-placeholder-id] > .i-am-taking-up-space');
  $this->assertSession()
    ->elementTextEquals('css', '#placeholder-preview-twig-container [data-big-pipe-placeholder-id] > .i-am-taking-up-space', 'LOOK AT ME I AM CONSUMING SPACE FOR LATER');
  $this->assertSession()
    ->elementTextNotContains('css', '#placeholder-preview-twig-container', $display_name);
  $this->assertSession()
    ->pageTextContains('There is a lamb and there is a puppy');
  $this->assertSession()
    ->elementTextEquals('css', '#placeholder-render-array-container [data-big-pipe-placeholder-id] > #render-array-preview', 'There is a lamb and there is a puppy');
  $this->assertSession()
    ->elementTextNotContains('css', '#placeholder-render-array-container', 'Llamas forever!');
  // Uninstall big_pipe_bypass_js.
  \Drupal::service('module_installer')->uninstall([
    'big_pipe_bypass_js',
  ]);
  $this->rebuildAll();
  $this->drupalGet('big_pipe_test_preview');
  $this->assertSession()
    ->waitForElementRemoved('css', '[data-big-pipe-placeholder-id]', 20000);
  $this->assertSession()
    ->elementTextContains('css', '#placeholder-preview-twig-container', $display_name);
  $this->assertSession()
    ->pageTextNotContains('LOOK AT ME I AM CONSUMING SPACE FOR LATER');
  $this->assertSession()
    ->elementTextContains('css', '#placeholder-render-array-container marquee', 'Llamas forever!');
  $this->assertSession()
    ->pageTextNotContains('There is a lamb and there is a puppy');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.