diff --git a/modules/pager_example/pager_example.info.yml b/modules/pager_example/pager_example.info.yml
new file mode 100644
index 0000000..e6c4140
--- /dev/null
+++ b/modules/pager_example/pager_example.info.yml
@@ -0,0 +1,7 @@
+name: Pager Example
+type: module
+description: 'The example output nodes with pager.'
+package: Example modules
+core: 8.x
+dependencies:
+  -node
diff --git a/modules/pager_example/pager_example.routing.yml b/modules/pager_example/pager_example.routing.yml
new file mode 100644
index 0000000..806d942
--- /dev/null
+++ b/modules/pager_example/pager_example.routing.yml
@@ -0,0 +1,7 @@
+pager_example.page:
+  path: '/pager_example'
+  defaults:
+    _content: '\Drupal\pager_example\Controller\PagerExamplePage::getContent'
+    _title: 'Pager example'
+  requirements:
+    _permission: 'access content'
diff --git a/modules/pager_example/src/Controller/PagerExamplePage.php b/modules/pager_example/src/Controller/PagerExamplePage.php
new file mode 100644
index 0000000..417d205
--- /dev/null
+++ b/modules/pager_example/src/Controller/PagerExamplePage.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\pager_example\Controller\PagerExamplePage.
+ */
+
+namespace Drupal\pager_example\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+
+/**
+ * Controller for pager_example.page route.
+ */
+class PagerExamplePage extends ControllerBase {
+
+  /**
+   * Content callback for the pager_example.page route.
+   */
+  public function getContent() {
+    $pager_data = db_select('node', 'n')
+      ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
+      ->fields('n', array('nid'))
+      ->orderBy('n.nid', 'DESC')
+      ->limit(2)
+      ->execute()
+      ->fetchAllAssoc('nid');
+
+    $rows = array();
+    $nodes = entity_load_multiple('node', array_keys($pager_data));
+
+    foreach ($nodes as $node) {
+      $rows[] = array(
+        'nid' => $node->id(),
+        'title' => $node->getTitle(),
+      );
+    }
+
+    $page['pager_example'] = array(
+      '#rows' => $rows,
+      '#header' => array(t('NID'), t('Title')),
+      '#type' => 'table',
+      '#empty' => t('No content available.'),
+    );
+    $page['pager'] = array(
+      '#theme' => 'pager',
+      '#weight' => 10,
+    );
+
+    return $page;
+  }
+}
diff --git a/modules/pager_example/src/Tests/PagerExampleTest.php b/modules/pager_example/src/Tests/PagerExampleTest.php
new file mode 100644
index 0000000..ac3ad3e
--- /dev/null
+++ b/modules/pager_example/src/Tests/PagerExampleTest.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\pager_example\Tests\PagerExampleTest.
+ */
+
+namespace Drupal\pager_example\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests paging.
+ *
+ * @group pager_example
+ */
+class PagerExampleTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('pager_example', 'node');
+
+  /**
+   * The main user for testing.
+   *
+   * @var object
+   */
+  protected $user;
+
+  protected function setUp() {
+    parent::setUp();
+  }
+
+  /**
+   * Confirms nodes paging works correctly on page "pager_example".
+   */
+  function testPagerExamplePage() {
+    $permissions = array('access content');
+    $this->user = $this->drupalCreateUser($permissions);
+    $this->drupalLogin($this->user);
+
+    $nodes = array();
+    $nodes[] = $this->drupalCreateNode();
+
+    $this->drupalGet('pager_example');
+    $this->assertNoRaw(t('next'), 'Paging links not found.');
+
+    // Create new 5 nodes.
+    for ($i = 1; $i <= 5; $i++) {
+      $nodes[] = $this->drupalCreateNode();
+    }
+
+    // Check the first page.
+    $this->drupalGet('pager_example');
+    $this->assertRaw(t('next'), 'Paging links found.');
+    $this->assertRaw($nodes[5]->getTitle(), 'Node 6 appears on page 1.');
+
+    // Check the last page.
+    $this->drupalGet('pager_example', array('query' => array('page' => 3)));
+    $this->assertRaw($nodes[0]->getTitle(), 'Node 1 appears on page 4.');
+
+    // Logout.
+    $this->drupalLogout();
+  }
+}
