diff --git a/src/Tests/EntityBrowserViewsWidgetWebTest.php b/src/Tests/EntityBrowserViewsWidgetWebTest.php
new file mode 100644
index 0000000..9a9fa21
--- /dev/null
+++ b/src/Tests/EntityBrowserViewsWidgetWebTest.php
@@ -0,0 +1,173 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\entity_browser\Tests\EntityBrowserViewsWidgetWebTest.
+ */
+
+namespace Drupal\entity_browser\Tests;
+
+use Drupal\simpletest\WebTestBase;
+use Drupal\user\Entity\Role;
+
+/**
+ * Entity Browser views widget tests.
+ *
+ * @group entity_browser
+ */
+class EntityBrowserViewsWidgetWebTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'system',
+    'user',
+    'node',
+    'file',
+    'field_ui',
+    'ctools',
+    'views',
+    'views_ui',
+    'entity_reference',
+    'entity_browser_test',
+  ];
+
+  /**
+   * User with permissions to administer configuration, content types, entity browsers.
+   *
+   * @var \Drupal\user\Entity\User
+   */
+  protected $user;
+
+  /**
+   * Setup Environment.
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->user = $this->drupalCreateUser([
+      'administer site configuration',
+      'administer nodes',
+      'administer content types',
+      'administer node fields',
+      'bypass node access',
+      'administer views',
+      'access content',
+      'administer users',
+      'access user profiles',
+      'administer permissions',
+      'administer entity browsers',
+      'administer display modes',
+      'administer node display',
+      'administer node form display',
+    ]);
+    $this->drupalLogin($this->user);
+  }
+
+  /**
+   * Tests Entity Browser views widget.
+   */
+  public function testViewsWidget() {
+    // Create test content type.
+    $edit = [
+      'name' => 'Entity browser',
+      'title_label' => 'An example Custom Content type.',
+      'type' => 'entity_browser',
+    ];
+    $this->drupalPostForm('admin/structure/types/add', $edit, t('Save and manage fields'));
+
+    // Create entity_reference field.
+    $edit = [
+      'new_storage_type' => 'entity_reference',
+      'label' => 'Users',
+      'field_name' => 'users',
+    ];
+    $this->drupalPostForm('admin/structure/types/manage/entity_browser/fields/add-field', $edit, t('Save and continue'));
+
+    // Set type of item to reference.
+    $edit = [
+      'settings[target_type]' => 'user',
+      'cardinality' => '-1',
+    ];
+    $this->drupalPostForm('/admin/structure/types/manage/entity_browser/fields/node.entity_browser.field_users/storage', $edit, t('Save field settings'));
+    // Create a new entity browser.
+    $entity_browser = $this->createEntityBrowser();
+
+    // Go to the form display page.
+    $this->drupalGet('/admin/structure/types/manage/entity_browser/form-display');
+
+    // Switch widget dropdown to entity browser and click on the widget settings
+    // button to open the widget settings form.
+    $edit = [
+      'fields[field_users][type]' => 'entity_browser_entity_reference',
+    ];
+    $this->drupalPostAjaxForm(NULL, $edit, 'field_users_settings_edit');
+
+    // Update widget settings form.
+    $edit = [
+      'fields[field_users][settings_edit_form][settings][entity_browser]' => $entity_browser->id(),
+      'fields[field_users][settings_edit_form][settings][field_widget_display]' => 'label',
+      'fields[field_users][settings_edit_form][settings][field_widget_edit]' => 1,
+      'fields[field_users][settings_edit_form][settings][field_widget_remove]' => 1,
+      'fields[field_users][settings_edit_form][settings][open]' => 1,
+    ];
+    $this->drupalPostForm(NULL, $edit, t('Update'));
+    $this->drupalPostForm(NULL, [], t('Save'));
+
+    // Add new node and test if the upload widget is present.
+    $this->drupalGet('/node/add/entity_browser');
+    $this->assertLink('Open browser');
+    $this->assertResponse(200);
+    $this->drupalGet('/entity-browser/iframe/' . $entity_browser->id(), ['query' => ['uuid' => $entity_browser->uuid(), 'original_path' => '/node/add/entity_browser']]);
+    $this->assertFieldByName('entity_browser_select[0]');
+  }
+
+  /**
+   * Creates and tests a new entity_browser with a views widget.
+   *
+   * @return \Drupal\entity_browser\EntityBrowserInterface
+   *   The fully loaded entity_browser created.
+   */
+  public function createEntityBrowser() {
+    // Add a new entity_browser.
+    $this->drupalGet('/admin/config/content/entity_browser/add');
+    $edit = [
+      'label' => 'test entity browser',
+      'id' => 'test_entity_browser',
+      'display' => 'iframe',
+      'widget_selector' => 'tabs',
+      'selection_display' => 'no_display',
+      'submit_text' => 'Select',
+    ];
+    $this->drupalPostForm(NULL, $edit, 'Next');
+    $this->assertUrl('/admin/config/content/entity_browser/test_entity_browser/display', ['query' => ['js' => 'nojs']]);
+    $edit = [
+      'width' => 720,
+      'height' => 500,
+      'link_text' => 'Open browser',
+      'auto_open' => FALSE,
+    ];
+    $this->drupalPostForm(NULL, $edit, 'Next');
+    // Widget selector step.
+    $this->assertUrl('/admin/config/content/entity_browser/test_entity_browser/widget_selector', ['query' => ['js' => 'nojs']]);
+    $this->drupalPostForm(NULL, [], 'Next');
+    // Selection display step.
+    $this->assertUrl('/admin/config/content/entity_browser/test_entity_browser/selection_display', ['query' => ['js' => 'nojs']]);
+    $this->drupalPostForm(NULL, [], 'Next');
+    // Widgets step.
+    $this->assertUrl('/admin/config/content/entity_browser/test_entity_browser/widgets', ['query' => ['js' => 'nojs']]);
+    $this->drupalPostAjaxForm(NULL, ['widget' => 'view'], 'widget');
+    $this->drupalPostForm(NULL, [], 'Finish');
+    $loaded_entity_browser = $this->container->get('entity_type.manager')
+      ->getStorage('entity_browser')
+      ->load('test_entity_browser');
+    // Add the permission to access to this entity_browser page to the user.
+    $role = Role::load('authenticated');
+    $role->grantPermission('access test_entity_browser entity browser pages');
+    $role->save();
+    return $loaded_entity_browser;
+  }
+}
diff --git a/tests/modules/entity_browser_test/config/install/views.view.entity_browser_view_widget.yml b/tests/modules/entity_browser_test/config/install/views.view.entity_browser_view_widget.yml
new file mode 100644
index 0000000..746b185
--- /dev/null
+++ b/tests/modules/entity_browser_test/config/install/views.view.entity_browser_view_widget.yml
@@ -0,0 +1,218 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - entity_browser
+    - user
+id: entity_browser_view_widget
+label: 'Entity Browser View Widget'
+module: views
+description: ''
+tag: ''
+base_table: users_field_data
+base_field: uid
+core: 8.x
+display:
+  default:
+    display_plugin: default
+    id: default
+    display_title: Master
+    position: 0
+    display_options:
+      access:
+        type: perm
+        options:
+          perm: 'access user profiles'
+      cache:
+        type: tag
+        options: {  }
+      query:
+        type: views_query
+        options:
+          disable_sql_rewrite: false
+          distinct: false
+          replica: false
+          query_comment: ''
+          query_tags: {  }
+      exposed_form:
+        type: basic
+        options:
+          submit_button: Apply
+          reset_button: false
+          reset_button_label: Reset
+          exposed_sorts_label: 'Sort by'
+          expose_sort_order: true
+          sort_asc_label: Asc
+          sort_desc_label: Desc
+      pager:
+        type: mini
+        options:
+          items_per_page: 10
+          offset: 0
+          id: 0
+          total_pages: null
+          expose:
+            items_per_page: false
+            items_per_page_label: 'Items per page'
+            items_per_page_options: '5, 10, 25, 50'
+            items_per_page_options_all: false
+            items_per_page_options_all_label: '- All -'
+            offset: false
+            offset_label: Offset
+          tags:
+            previous: ‹‹
+            next: ››
+      style:
+        type: default
+        options:
+          grouping: {  }
+          row_class: ''
+          default_row_class: true
+          uses_fields: false
+      row:
+        type: fields
+        options:
+          inline: {  }
+          separator: ''
+          hide_empty: false
+          default_field_elements: true
+      fields:
+        name:
+          id: name
+          table: users_field_data
+          field: name
+          entity_type: user
+          entity_field: name
+          label: ''
+          alter:
+            alter_text: false
+            make_link: false
+            absolute: false
+            trim: false
+            word_boundary: false
+            ellipsis: false
+            strip_tags: false
+            html: false
+          hide_empty: false
+          empty_zero: false
+          plugin_id: field
+          relationship: none
+          group_type: group
+          admin_label: ''
+          exclude: false
+          element_type: ''
+          element_class: ''
+          element_label_type: ''
+          element_label_class: ''
+          element_label_colon: true
+          element_wrapper_type: ''
+          element_wrapper_class: ''
+          element_default_classes: true
+          empty: ''
+          hide_alter_empty: true
+          click_sort_column: value
+          type: user_name
+          settings: {  }
+          group_column: value
+          group_columns: {  }
+          group_rows: true
+          delta_limit: 0
+          delta_offset: 0
+          delta_reversed: false
+          delta_first_last: false
+          multi_type: separator
+          separator: ', '
+          field_api_classes: false
+        entity_browser_select:
+          id: entity_browser_select
+          table: users_field_data
+          field: entity_browser_select
+          relationship: none
+          group_type: group
+          admin_label: ''
+          label: ''
+          exclude: false
+          alter:
+            alter_text: false
+            text: ''
+            make_link: false
+            path: ''
+            absolute: false
+            external: false
+            replace_spaces: false
+            path_case: none
+            trim_whitespace: false
+            alt: ''
+            rel: ''
+            link_class: ''
+            prefix: ''
+            suffix: ''
+            target: ''
+            nl2br: false
+            max_length: 0
+            word_boundary: true
+            ellipsis: true
+            more_link: false
+            more_link_text: ''
+            more_link_path: ''
+            strip_tags: false
+            trim: false
+            preserve_tags: ''
+            html: false
+          element_type: ''
+          element_class: ''
+          element_label_type: ''
+          element_label_class: ''
+          element_label_colon: false
+          element_wrapper_type: ''
+          element_wrapper_class: ''
+          element_default_classes: true
+          empty: ''
+          hide_empty: false
+          empty_zero: false
+          hide_alter_empty: true
+          entity_type: user
+          plugin_id: entity_browser_select
+      filters:
+        status:
+          value: true
+          table: users_field_data
+          field: status
+          plugin_id: boolean
+          entity_type: user
+          entity_field: status
+          id: status
+          expose:
+            operator: ''
+          group: 1
+      sorts: {  }
+      header: {  }
+      footer: {  }
+      empty: {  }
+      relationships: {  }
+      arguments: {  }
+      display_extenders: {  }
+    cache_metadata:
+      max-age: -1
+      contexts:
+        - 'languages:language_content'
+        - 'languages:language_interface'
+        - url.query_args
+        - user.permissions
+      tags: {  }
+  entity_browser_1:
+    display_plugin: entity_browser
+    id: entity_browser_1
+    display_title: 'Entity browser'
+    position: 1
+    display_options:
+      display_extenders: {  }
+    cache_metadata:
+      max-age: -1
+      contexts:
+        - 'languages:language_content'
+        - 'languages:language_interface'
+        - url.query_args
+        - user.permissions
+      tags: {  }
+
