<!DOCTYPE html>
<!--
@license
Copyright (C) 2015 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
<title>Elements Test Runner</title>
<meta charset="utf-8">
<script src="/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
<script src="/bower_components/web-component-tester/browser.js"></script>
<script>
  const testFiles = [];
  const scriptsPath = '../scripts/';
  const elementsPath = '../elements/';
  const behaviorsPath = '../behaviors/';

  // Elements tests.
  /* eslint-disable max-len */
  const elements = [
    // This seemed to be flakey when it was farther down the list. Keep at the
    // beginning.
    'gr-app_test.html',
    'admin/gr-access-section/gr-access-section_test.html',
    'admin/gr-admin-group-list/gr-admin-group-list_test.html',
    'admin/gr-admin-view/gr-admin-view_test.html',
    'admin/gr-confirm-delete-item-dialog/gr-confirm-delete-item-dialog_test.html',
    'admin/gr-create-change-dialog/gr-create-change-dialog_test.html',
    'admin/gr-create-group-dialog/gr-create-group-dialog_test.html',
    'admin/gr-create-pointer-dialog/gr-create-pointer-dialog_test.html',
    'admin/gr-create-repo-dialog/gr-create-repo-dialog_test.html',
    'admin/gr-group-audit-log/gr-group-audit-log_test.html',
    'admin/gr-group-members/gr-group-members_test.html',
    'admin/gr-group/gr-group_test.html',
    'admin/gr-permission/gr-permission_test.html',
    'admin/gr-plugin-config-array-editor/gr-plugin-config-array-editor_test.html',
    'admin/gr-plugin-list/gr-plugin-list_test.html',
    'admin/gr-repo-access/gr-repo-access_test.html',
    'admin/gr-repo-command/gr-repo-command_test.html',
    'admin/gr-repo-commands/gr-repo-commands_test.html',
    'admin/gr-repo-dashboards/gr-repo-dashboards_test.html',
    'admin/gr-repo-detail-list/gr-repo-detail-list_test.html',
    'admin/gr-repo-list/gr-repo-list_test.html',
    'admin/gr-repo-plugin-config/gr-repo-plugin-config_test.html',
    'admin/gr-repo/gr-repo_test.html',
    'admin/gr-rule-editor/gr-rule-editor_test.html',
    'change-list/gr-change-list-item/gr-change-list-item_test.html',
    'change-list/gr-change-list-view/gr-change-list-view_test.html',
    'change-list/gr-change-list/gr-change-list_test.html',
    'change-list/gr-create-commands-dialog/gr-create-commands-dialog_test.html',
    'change-list/gr-create-change-help/gr-create-change-help_test.html',
    'change-list/gr-dashboard-view/gr-dashboard-view_test.html',
    'change-list/gr-repo-header/gr-repo-header_test.html',
    'change-list/gr-user-header/gr-user-header_test.html',
    'change/gr-change-actions/gr-change-actions_test.html',
    'change/gr-change-metadata/gr-change-metadata-it_test.html',
    'change/gr-change-metadata/gr-change-metadata_test.html',
    'change/gr-change-requirements/gr-change-requirements_test.html',
    'change/gr-change-view/gr-change-view_test.html',
    'change/gr-comment-list/gr-comment-list_test.html',
    'change/gr-commit-info/gr-commit-info_test.html',
    'change/gr-confirm-abandon-dialog/gr-confirm-abandon-dialog_test.html',
    'change/gr-confirm-cherrypick-dialog/gr-confirm-cherrypick-dialog_test.html',
    'change/gr-confirm-cherrypick-conflict-dialog/gr-confirm-cherrypick-conflict-dialog_test.html',
    'change/gr-confirm-move-dialog/gr-confirm-move-dialog_test.html',
    'change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog_test.html',
    'change/gr-confirm-revert-dialog/gr-confirm-revert-dialog_test.html',
    'change/gr-confirm-submit-dialog/gr-confirm-submit-dialog_test.html',
    'change/gr-download-dialog/gr-download-dialog_test.html',
    'change/gr-file-list-header/gr-file-list-header_test.html',
    'change/gr-file-list/gr-file-list_test.html',
    'change/gr-included-in-dialog/gr-included-in-dialog_test.html',
    'change/gr-label-score-row/gr-label-score-row_test.html',
    'change/gr-label-scores/gr-label-scores_test.html',
    'change/gr-message/gr-message_test.html',
    'change/gr-messages-list/gr-messages-list_test.html',
    'change/gr-related-changes-list/gr-related-changes-list_test.html',
    'change/gr-reply-dialog/gr-reply-dialog-it_test.html',
    'change/gr-reply-dialog/gr-reply-dialog_test.html',
    'change/gr-reviewer-list/gr-reviewer-list_test.html',
    'change/gr-thread-list/gr-thread-list_test.html',
    'change/gr-upload-help-dialog/gr-upload-help-dialog_test.html',
    'core/gr-account-dropdown/gr-account-dropdown_test.html',
    'core/gr-error-dialog/gr-error-dialog_test.html',
    'core/gr-error-manager/gr-error-manager_test.html',
    'core/gr-key-binding-display/gr-key-binding-display_test.html',
    'core/gr-keyboard-shortcuts-dialog/gr-keyboard-shortcuts-dialog_test.html',
    'core/gr-main-header/gr-main-header_test.html',
    'core/gr-navigation/gr-navigation_test.html',
    'core/gr-reporting/gr-reporting_test.html',
    'core/gr-router/gr-router_test.html',
    'core/gr-search-bar/gr-search-bar_test.html',
    'core/gr-smart-search/gr-smart-search_test.html',
    'diff/gr-comment-api/gr-comment-api_test.html',
    'diff/gr-coverage-layer/gr-coverage-layer_test.html',
    'diff/gr-diff-builder/gr-diff-builder_test.html',
    'diff/gr-diff-builder/gr-diff-builder-unified_test.html',
    'diff/gr-diff-cursor/gr-diff-cursor_test.html',
    'diff/gr-diff-highlight/gr-annotation_test.html',
    'diff/gr-diff-highlight/gr-diff-highlight_test.html',
    'diff/gr-diff-host/gr-diff-host_test.html',
    'diff/gr-diff-mode-selector/gr-diff-mode-selector_test.html',
    'diff/gr-diff-processor/gr-diff-processor_test.html',
    'diff/gr-diff-selection/gr-diff-selection_test.html',
    'diff/gr-diff-view/gr-diff-view_test.html',
    'diff/gr-diff/gr-diff-group_test.html',
    'diff/gr-diff/gr-diff_test.html',
    'diff/gr-patch-range-select/gr-patch-range-select_test.html',
    'diff/gr-ranged-comment-layer/gr-ranged-comment-layer_test.html',
    'diff/gr-selection-action-box/gr-selection-action-box_test.html',
    'diff/gr-syntax-layer/gr-syntax-layer_test.html',
    'documentation/gr-documentation-search/gr-documentation-search_test.html',
    'edit/gr-default-editor/gr-default-editor_test.html',
    'edit/gr-edit-controls/gr-edit-controls_test.html',
    'edit/gr-edit-file-controls/gr-edit-file-controls_test.html',
    'edit/gr-editor-view/gr-editor-view_test.html',
    'plugins/gr-admin-api/gr-admin-api_test.html',
    'plugins/gr-styles-api/gr-styles-api_test.html',
    'plugins/gr-attribute-helper/gr-attribute-helper_test.html',
    'plugins/gr-dom-hooks/gr-dom-hooks_test.html',
    'plugins/gr-endpoint-decorator/gr-endpoint-decorator_test.html',
    'plugins/gr-event-helper/gr-event-helper_test.html',
    'plugins/gr-external-style/gr-external-style_test.html',
    'plugins/gr-plugin-host/gr-plugin-host_test.html',
    'plugins/gr-popup-interface/gr-plugin-popup_test.html',
    'plugins/gr-popup-interface/gr-popup-interface_test.html',
    'plugins/gr-repo-api/gr-repo-api_test.html',
    'plugins/gr-settings-api/gr-settings-api_test.html',
    'plugins/gr-theme-api/gr-theme-api_test.html',
    'settings/gr-account-info/gr-account-info_test.html',
    'settings/gr-agreements-list/gr-agreements-list_test.html',
    'settings/gr-change-table-editor/gr-change-table-editor_test.html',
    'settings/gr-cla-view/gr-cla-view_test.html',
    'settings/gr-edit-preferences/gr-edit-preferences_test.html',
    'settings/gr-email-editor/gr-email-editor_test.html',
    'settings/gr-gpg-editor/gr-gpg-editor_test.html',
    'settings/gr-group-list/gr-group-list_test.html',
    'settings/gr-http-password/gr-http-password_test.html',
    'settings/gr-identities/gr-identities_test.html',
    'settings/gr-menu-editor/gr-menu-editor_test.html',
    'settings/gr-registration-dialog/gr-registration-dialog_test.html',
    'settings/gr-settings-view/gr-settings-view_test.html',
    'settings/gr-ssh-editor/gr-ssh-editor_test.html',
    'settings/gr-watched-projects-editor/gr-watched-projects-editor_test.html',
    'shared/gr-event-interface/gr-event-interface_test.html',
    'shared/gr-account-entry/gr-account-entry_test.html',
    'shared/gr-account-label/gr-account-label_test.html',
    'shared/gr-account-list/gr-account-list_test.html',
    'shared/gr-account-link/gr-account-link_test.html',
    'shared/gr-alert/gr-alert_test.html',
    'shared/gr-autocomplete-dropdown/gr-autocomplete-dropdown_test.html',
    'shared/gr-autocomplete/gr-autocomplete_test.html',
    'shared/gr-avatar/gr-avatar_test.html',
    'shared/gr-button/gr-button_test.html',
    'shared/gr-change-star/gr-change-star_test.html',
    'shared/gr-change-status/gr-change-status_test.html',
    'shared/gr-comment-thread/gr-comment-thread_test.html',
    'shared/gr-comment/gr-comment_test.html',
    'shared/gr-copy-clipboard/gr-copy-clipboard_test.html',
    'shared/gr-count-string-formatter/gr-count-string-formatter_test.html',
    'shared/gr-cursor-manager/gr-cursor-manager_test.html',
    'shared/gr-date-formatter/gr-date-formatter_test.html',
    'shared/gr-dialog/gr-dialog_test.html',
    'shared/gr-diff-preferences/gr-diff-preferences_test.html',
    'shared/gr-download-commands/gr-download-commands_test.html',
    'shared/gr-dropdown/gr-dropdown_test.html',
    'shared/gr-dropdown-list/gr-dropdown-list_test.html',
    'shared/gr-editable-content/gr-editable-content_test.html',
    'shared/gr-editable-label/gr-editable-label_test.html',
    'shared/gr-formatted-text/gr-formatted-text_test.html',
    'shared/gr-hovercard/gr-hovercard_test.html',
    'shared/gr-js-api-interface/gr-annotation-actions-context_test.html',
    'shared/gr-js-api-interface/gr-annotation-actions-js-api_test.html',
    'shared/gr-js-api-interface/gr-change-actions-js-api_test.html',
    'shared/gr-js-api-interface/gr-change-reply-js-api_test.html',
    'shared/gr-js-api-interface/gr-api-utils_test.html',
    'shared/gr-js-api-interface/gr-js-api-interface_test.html',
    'shared/gr-js-api-interface/gr-gerrit_test.html',
    'shared/gr-js-api-interface/gr-plugin-action-context_test.html',
    'shared/gr-js-api-interface/gr-plugin-loader_test.html',
    'shared/gr-js-api-interface/gr-plugin-endpoints_test.html',
    'shared/gr-js-api-interface/gr-plugin-rest-api_test.html',
    'shared/gr-fixed-panel/gr-fixed-panel_test.html',
    'shared/gr-labeled-autocomplete/gr-labeled-autocomplete_test.html',
    'shared/gr-label-info/gr-label-info_test.html',
    'shared/gr-lib-loader/gr-lib-loader_test.html',
    'shared/gr-limited-text/gr-limited-text_test.html',
    'shared/gr-linked-chip/gr-linked-chip_test.html',
    'shared/gr-linked-text/gr-linked-text_test.html',
    'shared/gr-list-view/gr-list-view_test.html',
    'shared/gr-overlay/gr-overlay_test.html',
    'shared/gr-page-nav/gr-page-nav_test.html',
    'shared/gr-repo-branch-picker/gr-repo-branch-picker_test.html',
    'shared/gr-rest-api-interface/gr-auth_test.html',
    'shared/gr-rest-api-interface/gr-etag-decorator_test.html',
    'shared/gr-rest-api-interface/gr-rest-api-interface_test.html',
    'shared/gr-rest-api-interface/gr-reviewer-updates-parser_test.html',
    'shared/gr-rest-api-interface/gr-rest-apis/gr-rest-api-helper_test.html',
    'shared/gr-select/gr-select_test.html',
    'shared/gr-shell-command/gr-shell-command_test.html',
    'shared/gr-storage/gr-storage_test.html',
    'shared/gr-textarea/gr-textarea_test.html',
    'shared/gr-tooltip-content/gr-tooltip-content_test.html',
    'shared/gr-tooltip/gr-tooltip_test.html',
    'shared/revision-info/revision-info_test.html',
  ];
  /* eslint-enable max-len */
  for (let file of elements) {
    file = elementsPath + file;
    testFiles.push(file);
  }

  // Behaviors tests.
  /* eslint-disable max-len */
  const behaviors = [
    'async-foreach-behavior/async-foreach-behavior_test.html',
    'base-url-behavior/base-url-behavior_test.html',
    'docs-url-behavior/docs-url-behavior_test.html',
    'dom-util-behavior/dom-util-behavior_test.html',
    'keyboard-shortcut-behavior/keyboard-shortcut-behavior_test.html',
    'rest-client-behavior/rest-client-behavior_test.html',
    'gr-access-behavior/gr-access-behavior_test.html',
    'gr-admin-nav-behavior/gr-admin-nav-behavior_test.html',
    'gr-change-table-behavior/gr-change-table-behavior_test.html',
    'gr-list-view-behavior/gr-list-view-behavior_test.html',
    'gr-display-name-behavior/gr-display-name-behavior_test.html',
    'gr-patch-set-behavior/gr-patch-set-behavior_test.html',
    'gr-path-list-behavior/gr-path-list-behavior_test.html',
    'gr-tooltip-behavior/gr-tooltip-behavior_test.html',
    'gr-url-encoding-behavior/gr-url-encoding-behavior_test.html',
    'safe-types-behavior/safe-types-behavior_test.html',
  ];
  /* eslint-enable max-len */
  for (let file of behaviors) {
    // Behaviors do not utilize the DOM, so no shadow DOM test is necessary.
    file = behaviorsPath + file;
    testFiles.push(file);
  }

  const scripts = [
    'gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider_test.html',
    'gr-group-suggestions-provider/gr-group-suggestions-provider_test.html',
    'gr-display-name-utils/gr-display-name-utils_test.html',
    'gr-email-suggestions-provider/gr-email-suggestions-provider_test.html',
  ];
  /* eslint-enable max-len */
  for (let file of scripts) {
    file = scriptsPath + file;
    testFiles.push(file);
  }

  WCT.loadSuites(testFiles);
</script>
