airbnb/caravel

View on GitHub
superset-frontend/cypress-base/cypress/support/directories.ts

Summary

Maintainability
C
1 day
Test Coverage
/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */

const dataTestLocator = (value: string) => `[data-test='${value}']`;

export function dataTestChartName(chartName: string): string {
  return `[data-test-chart-name='${chartName}']`;
}

export const pageHeader = {
  logo: '.navbar-brand > img',
  headerNavigationItem: '.ant-menu-submenu-title',
  headerNavigationDropdown: "[aria-label='triangle-down']",
  headerNavigationItemMenu: '.ant-menu-item-group-list',
  plusIcon: ':nth-child(2) > .ant-menu-submenu-title',
  plusIconMenuOptions: {
    sqlQueryOption: dataTestLocator('menu-item-SQL query'),
    chartOption: dataTestLocator('menu-item-Chart'),
    dashboardOption: dataTestLocator('menu-item-Dashboard'),
  },
  plusMenu: '.ant-menu-submenu-popup',
  barButtons: '[role="presentation"]',
  sqlLabMenu: '[id="item_3$Menu"]',
  dataMenu: '[id="item_4$Menu"]',
};

export const profile = {
  activeTab: '.ant-tabs-tab-active',
  inactiveTab: '.ant-tabs-tab',
  emptyFavoritedPlaceholder: '.ant-empty-normal',
  tableRow: '.table-row',
  favoritesSpace: '#rc-tabs-0-panel-2',
};
export const securityAccess = {
  rolesBubble: '.ant-badge-count',
};
export const homePage = {
  homeSection: {
    sectionArea: '.ant-collapse-content-box',
    sectionElement: '.ant-card-meta-title',
  },
  sections: {
    expandedSection: '.ant-collapse-item-active',
    expandedSectionHeader: '[aria-expanded="true"]',
    collapseExpandButton: '.ant-collapse-arrow',
    collapsedSection: '[class="ant-collapse-item"]',
    collapsedSectionHeader: '[aria-expanded="false"]',
    section: '[class^="ant-collapse-item"]',
    sectionsMenuContainer: "[role='navigation']",
    sectionsMenuItem: "[role='menuitem']",
    card: dataTestLocator('styled-card'),
  },
  thumbnailsSection: {
    container: "[class='switch']",
    toggle: "[role ='switch']",
  },
};
export const databasesPage = {
  addDatabaseButton: dataTestLocator('btn-create-database'),
  searchInput: dataTestLocator('search-input'),
  table: {
    tableRow: dataTestLocator('table-row'),
    tableCell: dataTestLocator('table-row-cell'),
    editButton: dataTestLocator('edit-alt'),
  },
  modal: {
    header: '#rcDialogTitle0 > h4',
    step: '.helper-top',
    selectDbStepTitle: '.select-db > h4',
    preferredBlockBigQuery: '.preferred > :nth-child(1)',
    preferredBlockPostgreSQL: '.preferred > :nth-child(2)',
    preferredBlockSnowflake: '.preferred > :nth-child(3)',
    preferredBlockMySQL: '.preferred > :nth-child(4)',
    preferredBlockAthena: '.preferred > :nth-child(5)',
    preferredBlockSheets: '.preferred > :nth-child(6)',
    supportedDatabasesText: '.control-label',
    orChoose: '.available-label',
    dbDropdown: '[class="ant-select-selection-search-input"]',
    dbDropdownMenu: '.rc-virtual-list-holder-inner',
    dbDropdownMenuItem: '[class="ant-select-item-option-content"]',
    infoAlert: '.ant-alert',
    serviceAccountInput: '[name="credentials_info"]',
    connectionStep: {
      modal: '.ant-modal-content',
      modalBody: '.ant-modal-body',
      stepTitle: '.css-7x6kk > h4',
      helperBottom: '.helper-bottom',
      postgresDatabase: '[name="database"]',
      dbInput: '[name="database_name"]',
      alertMessage: '.ant-alert-message',
      errorField: '[role="alert"]',
      uploadJson: '[title="Upload JSON file"]',
      chooseFile: '[class="ant-btn input-upload-btn"]',
      additionalParameters: '[name="query_input"]',
      sqlAlchemyUriInput: dataTestLocator('sqlalchemy-uri-input'),
      advancedTab: '#rc-tabs-0-tab-2',
      activeTab: '.ant-tabs-tab-active',
      securitySubMenu:
        ':nth-child(3) > .ant-collapse-header > .anticon > svg > path',
      aceTextInput: '.ace_text-input',
      aceContent: '.ace_content',
      connectButton: '.css-16i3wh7',
      hostInput: '[name="host"]',
      portInput: '[name="port"]',
      usernameInput: '[name="username"]',
      passwordInput: '[name="password"]',
      switch: '.ant-switch',
    },
  },
};

export const sqlLabView = {
  sqlEditorLeftBar: {
    sqlEditorLeftBar: '[data-test="sql-editor-left-bar"]',
    databaseSchemaTableSection:
      '[data-test="sql-editor-left-bar"] > :nth-child(1)',
    tableSchemaSection:
      '[data-test="sql-editor-left-bar"] > :nth-child(1) > :nth-child(3) > :nth-child(1)',
    tableSchemaInputEmpty: '[aria-label="Select table or type table name"]',
  },
  databaseInput: '[data-test=DatabaseSelector] > :nth-child(1)',
  emptyMenuOptionsPlaceholder: '[class="ant-empty-img-simple"]',
  removeTabButton: '.ant-tabs-tab-remove > .anticon > svg',
  tabsNavList: "[class='ant-tabs-nav-list']",
  tab: "[class='ant-tabs-tab-btn']",
  addTabButton: dataTestLocator('add-tab-icon'),
  tooltip: '.ant-tooltip-content',
  tabName: '.css-1suejie',
  schemaInput: '[data-test=DatabaseSelector] > :nth-child(2)',
  loadingIndicator: '.Select__loading-indicator',
  menuItem: '[class="ant-select-item-option-content"]',
  examplesMenuItem: '[title="examples"]',
  tableInput: ':nth-child(4) > .select > :nth-child(1)',
  sqlEditor: '#brace-editor textarea',
  saveAsButton: '.SaveQuery > .ant-btn',
  saveAsModal: {
    footer: '.ant-modal-footer',
    queryNameInput: 'input[class^="ant-input"]',
  },
  sqlToolbar: {
    toolbar: '#js-sql-toolbar',
    runButton: '.css-d3dxop',
  },
  rowsLimit: {
    dropdown: '.ant-dropdown-menu',
    limitButton: '.ant-dropdown-menu-item',
    limitButtonText: '.css-151uxnz',
    limitTextWithValue: '[class="ant-dropdown-trigger"]',
  },
  renderedTableHeader: '.ReactVirtualized__Table__headerRow',
  renderedTableRow: '.ReactVirtualized__Table__row',
  errorBody: '.error-body',
  alertMessage: '.ant-alert-message',
  historyTable: {
    header: '[role=columnheader]',
    table: '.QueryTable',
    row: dataTestLocator('table-row'),
    failureMarkIcon: '[aria-label=x-small]',
    successMarkIcon: '[aria-label=check]',
  },
};
export const queryHistory = {
  tableHeader: dataTestLocator('sort-header'),
  row: dataTestLocator('table-row'),
  cell: dataTestLocator('table-row-cell'),
  action: '[aria-label=full]',
};
export const savedQuery = {
  tableHeader: dataTestLocator('sort-header'),
  row: dataTestLocator('table-row'),
  cell: dataTestLocator('table-row-cell'),
  trash: dataTestLocator('delete-action'),
  deleteQueryIcon: '[data-test="delete-action"]',
  deleteModal: {
    deleteInput: dataTestLocator('delete-modal-input'),
    deleteButton: dataTestLocator('modal-confirm-button'),
  },
};
export const annotationLayersView = {
  emptyDescription: {
    description: '.ant-empty-description',
    addAnnotationLayerButton: '.ant-empty-footer > .ant-btn',
  },
  modal: {
    content: {
      content: '.ant-modal-body',
      title: '.ant-modal-body > :nth-child(2) > input',
      description: "[name='descr']",
    },
    footer: {
      footer: '.ant-modal-footer',
      addButton: dataTestLocator('modal-confirm-button'),
      cancelButton: dataTestLocator('modal-cancel-button'),
    },
  },
};
export const datasetsList = {
  newDatasetButton: '.css-yff34v',
  searchInput: dataTestLocator('filters-search'),
  newDatasetModal: {
    inputField: '[class="section"]',
    addButton: dataTestLocator('modal-confirm-button'),
    body: '.ant-modal-body',
  },
  table: {
    tableRow: {
      row: dataTestLocator('table-row'),
      rowText: dataTestLocator('cell-text'),
      rowCell: dataTestLocator('table-row-cell'),
    },
    tableRowHeader: {
      header: dataTestLocator('sort-header'),
      unsorted: '[aria-label="sort"]',
      sortAsc: '[aria-label="sort-asc"]',
      sortDesc: '[aria-label="sort-desc"]',
    },
    rowActionItems: dataTestLocator('table-row-cell'),
    actionButton: '.action-button',
    editButton: '[aria-label="edit-alt"]',
  },
  editDatasetModal: {
    modal: dataTestLocator('edit-dataset-tabs'),
    sourceNavigationTab: '#table-tabs-tab-0',
    metricsNavigationTab: dataTestLocator('collection-tab-Metrics'),
    columnsNavigationTab: dataTestLocator('collection-tab-Columns'),
    calculatedColumnsNavigationTab: dataTestLocator(
      'collection-tab-Calculated columns',
    ),
    settingsNavigationTab: '#table-tabs-tab-4',
    saveButton: dataTestLocator('datasource-modal-save'),
    sourceContent: '#table-tabs-panel-0',
    metricsContent: '#table-tabs-panel-1',
    columnsContent: '#table-tabs-panel-2',
    calculatedColumnsContent: '#table-tabs-panel-3',
    settingsContent: '#table-tabs-panel-4',
    aceTextInput: '.ace_text-input',
    sourceSQLInput: '.ace_content',
    sourceVirtualSQLRadio: ':nth-child(2) > .ant-radio > .ant-radio-inner',
    sourcePadlock: '[aria-label=lock-locked]',
    legacy: {
      panel: '.panel-body',
      sqlInput: '#sql',
      save: '.well > .btn-primary',
      description: '#description',
    },
  },
  deleteDatasetModal: {
    modal: '.ant-modal-content',
    deleteInput: dataTestLocator('delete-modal-input'),
    deleteButton: dataTestLocator('modal-confirm-button'),
    text: '.css-kxmt87',
  },
};
export const chartListView = {
  filtersBar: {
    searchField: dataTestLocator('filters-search'),
  },
  top: {
    bulkSelect: dataTestLocator('bulk-select'),
  },
  header: {
    cardView: '[aria-label="card-view"]',
    listView: '[aria-label="list-view"]',
    sort: '[class="ant-select-selection-search-input"][aria-label="Sort"]',
    sortRecentlyModifiedMenuOption: '[label="Recently modified"]',
    sortAlphabeticalMenuOption: '[label="Alphabetical"]',
    sortDropdown: '.Select__menu',
  },
  card: {
    card: dataTestLocator('styled-card'),
    cardCover: '[class="ant-card-cover"]',
    cardImage: '[class="gradient-container"]',
    selectedStarIcon: "[aria-label='favorite-selected']",
    unselectedStarIcon: "[aria-label='favorite-unselected']",
    starIcon: dataTestLocator('fave-unfave-icon'),
  },
  deleteModal: {
    deleteInput: dataTestLocator('delete-modal-input'),
    deleteButton: dataTestLocator('modal-confirm-button'),
  },
  table: {
    bulkSelect: {
      checkboxOff: '[aria-label="checkbox-off"]',
      checkboxOn: '[aria-label="checkbox-on"]',
      action: dataTestLocator('bulk-select-action'),
    },
    tableList: dataTestLocator('listview-table'),
    table: '[role="rowgroup"]',
    tableRowHeader: {
      header: dataTestLocator('sort-header'),
      unsorted: '[aria-label="sort"]',
      sortAsc: '[aria-label="sort-asc"]',
      sortDesc: '[aria-label="sort-desc"]',
    },
    tableRow: {
      row: dataTestLocator('table-row'),
      rowText: dataTestLocator('cell-text'),
      rowCell: dataTestLocator('table-row-cell'),
    },
  },
  addChartButton: '.css-yff34v',
};
export const nativeFilters = {
  modal: {
    container: '.ant-modal',
    footer: '.ant-modal-footer',
    saveButton: dataTestLocator('native-filter-modal-save-button'),
    cancelButton: dataTestLocator('native-filter-modal-cancel-button'),
    yesCancelButton: '[type="button"]',
    alertXUnsavedFilters: '.ant-alert-message',
    tabsList: {
      filterItemsContainer: dataTestLocator('filter-title-container'),
      tabsContainer: '[class="ant-tabs-nav-list"]',
      tab: '.ant-tabs-tab',
      removeTab: '[aria-label="trash"]',
    },
    addFilter: dataTestLocator('add-filter-button'),
    defaultValueCheck: '.ant-checkbox-checked',
  },
  addFilterButton: {
    button: `.ant-modal-content [data-test="new-dropdown-icon"]`,
    dropdownItem: '.ant-dropdown-menu-item',
  },
  filtersPanel: {
    filterName: dataTestLocator('filters-config-modal__name-input'),
    datasetName: dataTestLocator('filters-config-modal__datasource-input'),
    filterInfoInput: '.ant-select-selection-search-input',
    inputDropdown: '.ant-select-item-option-content',
    columnEmptyInput: '.ant-select-selection-placeholder',
    filterTypeInput: dataTestLocator('filters-config-modal__filter-type'),
    fieldInput: dataTestLocator('field-input'),
    filterTypeItem: '.ant-select-selection-item',
  },
  filterFromDashboardView: {
    filterValueInput: '[class="ant-select-selection-search-input"]',
    expand: dataTestLocator('filter-bar__expand-button'),
    collapse: dataTestLocator('filter-bar__collapse-button'),
    filterName: dataTestLocator('filter-control-name'),
    filterContent: '.ant-select-selection-item',
    createFilterButton: dataTestLocator('filter-bar__create-filter'),
    timeRangeFilterContent: dataTestLocator('time-range-trigger'),
  },
  createFilterButton: dataTestLocator('filter-bar__create-filter'),
  removeFilter: '[aria-label="remove"]',
  silentLoading: '.loading inline-centered css-101mkpk',
  filterConfigurationSections: {
    sectionHeader: '.ant-collapse-header',
    displayedSection: 'div[style="height: 100%; overflow-y: auto;"]',
    collapseExpandButton: '.ant-collapse-arrow',
    checkedCheckbox: '.ant-checkbox-wrapper-checked',
    infoTooltip: '[aria-label="Show info tooltip"]',
    parentFilterInput: dataTestLocator('parent-filter-input'),
    filterPlaceholder: '.ant-select-selection-placeholder',
    collapsedSectionContainer: '[class="ant-collapse-content-box"]',
  },
  filtersList: {
    list: '.ant-tabs-nav-list',
    listItemNotActive: '[class="ant-tabs-tab ant-tabs-tab-with-remove"]',
    listItemActive:
      '[class="ant-tabs-tab ant-tabs-tab-with-remove ant-tabs-tab-active"]',
    removeIcon: '[aria-label="trash"]',
  },
  filterItem: dataTestLocator('form-item-value'),
  filterItemDropdown: '.ant-select-selection-search',
  applyFilter: dataTestLocator('filter-bar__apply-button'),
  defaultInput: dataTestLocator('default-input'),
  filterIcon: dataTestLocator('filter-icon'),
  slider: {
    slider: '[class="ant-slider"]',
    startHandle: '[class="ant-slider-handle ant-slider-handle-1"]',
    endHandle: '[class="ant-slider-handle ant-slider-handle-2"]',
    sliderText: '[class="ant-slider-mark-text ant-slider-mark-text-active"]',
  },
};
export const dashboardListView = {
  dashboardListView: dataTestLocator('dashboard-list-view'),
  editItemAction: dataTestLocator('edit-alt'),
  filtersBar: {
    searchField: dataTestLocator('filters-search'),
  },
  top: {
    bulkSelect: dataTestLocator('bulk-select'),
  },
  card: {
    card: dataTestLocator('styled-card'),
    cardCover: '[class="ant-card-cover"]',
    cardImage: '[class="gradient-container"]',
    selectedStarIcon: "[aria-label='favorite-selected']",
    unselectedStarIcon: "[aria-label='favorite-unselected']",
    starIcon: dataTestLocator('fave-unfave-icon'),
  },
  deleteModal: {
    deleteInput: dataTestLocator('delete-modal-input'),
    deleteButton: dataTestLocator('modal-confirm-button'),
  },
  table: {
    starIcon: dataTestLocator('fave-unfave-icon'),
    selectedStarIcon: "[aria-label='favorite-selected']",
    unselectedStarIcon: "[aria-label='favorite-unselected']",
    bulkSelect: {
      checkboxOff: '[aria-label="checkbox-off"]',
      checkboxOn: '[aria-label="checkbox-on"]',
      action: dataTestLocator('bulk-select-action'),
    },
    tableRow: {
      sortHeader: dataTestLocator('sort-header'),
      row: dataTestLocator('table-row'),
      rowText: dataTestLocator('cell-text'),
      rowCell: dataTestLocator('table-row-cell'),
    },
    tableRowList: '[role="rowgroup"]',
    tableList: dataTestLocator('listview-table'),
    trashIcon: dataTestLocator('dashboard-list-trash-icon'),
  },
  actions: {
    importButton: dataTestLocator('import-button'),
    newDashboardButton: '.css-yff34v',
  },
  importModal: {
    selectFileButton: '.ant-upload > .ant-btn > span',
    importButton: dataTestLocator('modal-confirm-button'),
  },
  header: {
    cardView: '[aria-label="card-view"]',
    listView: '[aria-label="list-view"]',
    sort: dataTestLocator('sort-header'),
    sortDropdown: '.Select__menu',
    statusFilterInput: `${dataTestLocator(
      'filters-select',
    )}[aria-label='Status']`,
    ownerFilterInput: `${dataTestLocator(
      'filters-select',
    )}[aria-label='Owner']`,
    createdByFilterInput: `${dataTestLocator(
      'filters-select',
    )}[aria-label='Created by']`,
    FavoriteFilterInput: `${dataTestLocator(
      'filters-select',
    )}[aria-label='Favorite']`,
    searchFilterInput: `${dataTestLocator(
      'filters-search',
    )}[name='dashboard_title']`,
    draftStatusFilterOption: "[title='Draft']",
  },
};
export const exploreView = {
  openDatasourceMenu: dataTestLocator('open-datasource-tab'),
  sectionsHeader: '.ant-collapse-header',
  datasourceMenuThreeDots: dataTestLocator('datasource-menu-trigger'),
  threeDotsMenuDropdown: {
    editDataset: dataTestLocator('edit-dataset'),
  },
  chartContainer: dataTestLocator('chart-container'),
  chartHeading: {
    queryMenu: '#query',
    viewQueryButton: dataTestLocator('view-query-menu-item'),
    shortLinkButton: dataTestLocator('short-link-button'),
    embedCodeButton: dataTestLocator('embed-code-button'),
  },
  chartAreaItem: '.nv-legend-text',
  viewQueryModal: {
    container: '.ant-modal-content',
    closeButton: 'button.ant-modal-close',
  },
  embedCodeModal: {
    container: dataTestLocator('embed-code-popover'),
    textfield: dataTestLocator('embed-code-textarea'),
  },
  saveModal: {
    modal: '.ant-modal-content',
    chartNameInput: dataTestLocator('new-chart-name'),
    dashboardNameInput: '.ant-select-selection-search-input',
    addToDashboardInput: dataTestLocator(
      'save-chart-modal-select-dashboard-form',
    ),
    saveButton: dataTestLocator('btn-modal-save'),
    saveAsCircle: dataTestLocator('saveas-radio'),
    overwriteCircle: dataTestLocator('save-overwrite-radio'),
    saveAndGoToDashboard: '#btn_modal_save_goto_dash',
  },
  controlPanel: {
    panel: dataTestLocator('control-tabs'),
    categoryArea: '.ant-collapse-content-box',
    dragField: dataTestLocator('datasource'),
    metricsField: dataTestLocator('metrics'),
    optionField: dataTestLocator('option-label'),
    fieldInput: '.Select__control input',
    removeFieldValue: dataTestLocator('remove-control-button'),
    addFieldValue: '[aria-label="plus-small"]',
    vizType: dataTestLocator('visualization-type'),
    runButton: dataTestLocator('run-query-button'),
    saveQuery: dataTestLocator('query-save-button'),
    fieldValue: dataTestLocator('control-label'),
    addMetricModal: {
      container: dataTestLocator('metrics-edit-popover'),
      metricNameEdit: {
        editButton: dataTestLocator('AdhocMetricEditTitle#trigger'),
        input: dataTestLocator('AdhocMetricEditTitle#input'),
      },
      simpleTab: {
        tab: '#adhoc-metric-edit-tabs-tab-SIMPLE',
        columnInput: '[name="select-column"]',
        aggregateInput: '[name="select-aggregate"]',
      },
      customSQLTab: {
        tab: '#adhoc-metric-edit-tabs-tab-SQL',
        inputContainerField: '.ace_content',
        input: '.ace_text-input',
      },
      saveButton: dataTestLocator('AdhocMetricEdit#save'),
    },
    querySection: {
      groupByField: dataTestLocator('groupby'),
      filtersField: dataTestLocator('adhoc_filters'),
      filterValue: dataTestLocator('adhoc-filter-simple-value'),
      filterModal: {
        customSQL: {
          tab: '#adhoc-filter-edit-tabs-tab-SQL',
          inputArea: '.ace_content',
          input: '.ace_text-input',
        },
        simple: {
          tab: '#adhoc-filter-edit-tabs-tab-SIMPLE',
        },
        container: dataTestLocator('filter-edit-popover'),
        saveButton: dataTestLocator('adhoc-filter-edit-popover-save-button'),
      },
    },
    annotationLayerSection: {
      addAnnotationLayer: dataTestLocator('annotation_layers'),
      addAnnotationLayerModal: {
        container: dataTestLocator('popover-content'),
        name: dataTestLocator('annotation-layer-name-header'),
        formula: dataTestLocator('annotation-layer-value-header'),
        input: dataTestLocator(''),
      },
    },
    timeSection: {
      timeRangeFilter: dataTestLocator('time-range-trigger'),
      timeRangeFilterModal: {
        container: '.ant-popover-content',
        footer: '.footer',
        cancelButton: dataTestLocator('cancel-button'),
        configureLastTimeRange: {
          container: '.ant-radio-group',
          checkedItem: '.ant-radio-checked + span',
        },
        configureCustomTimeRange: {
          container: dataTestLocator('custom-frame'),
          timeInput: '.ant-input-number-input-wrap > input',
        },
        configureNoFilterTimeRange: {
          container: dataTestLocator('no-filter'),
        },
      },
    },
    advancedAnalyticsSection: {
      timeShift: {
        container: dataTestLocator('time_compare'),
        input: 'input[type=text]',
        selectedValues: '.Select__multi-value__label',
      },
    },
  },
  editDatasetModal: {
    container: '.ant-modal-content',
    datasetTabsContainer: dataTestLocator('edit-dataset-tabs'),
    saveButton: dataTestLocator('datasource-modal-save'),
    metricsTab: {
      addItem: dataTestLocator('crud-add-table-item'),
      rowsContainer: dataTestLocator('table-content-rows'),
    },
    confirmModal: {
      okButton: '.ant-modal-confirm-btns .ant-btn-primary',
    },
  },
  visualizationTypeModal: {
    vizTypeButton: dataTestLocator('viztype-selector-container'),
  },
};
export const createChartView = {
  chooseDatasetInput: '.ant-select-selection-search-input',
  chooseDatasetOption: '.ant-select-item-option-content',
  chooseDatasetList: '.rc-virtual-list-holder-inner',
  tableVizType: "[alt='Table']",
};
export const editDashboardView = {
  dashboardName: dataTestLocator('dashboard-title-input'),
  dashboardEditingContainer: dataTestLocator('dashboard-content'),
  editComponent: dataTestLocator('new-component'),
  discardChanges: dataTestLocator('discard-changes-button'),
  chartBox: dataTestLocator('chart-grid-component'),
  tabsList: {
    tabsContainer: '[class="ant-tabs-nav-list"]',
    tab: '.ant-tabs-tab',
  },
};
export const dashboardView = {
  dashboardContainer: dataTestLocator('grid-container'),
  dashboardAlert: {
    modal: dataTestLocator('toast-container'),
    closeButton: dataTestLocator('close-button'),
  },
  saveModal: {
    modal: '.ant-modal-content',
    dashboardNameInput: '.ant-input',
    saveButton: dataTestLocator('modal-save-dashboard-button'),
  },
  dashboardProperties: {
    modal: '.ant-modal-content',
    dashboardTitleInput: dataTestLocator('dashboard-title-input'),
    modalButton: '[type="button"]',
  },
  chart: {
    trashIcon: dataTestLocator('dashboard-delete-component-button'),
    refreshChart: dataTestLocator('refresh-chart-menu-item'),
  },
  threeDotsMenuIcon:
    '.header-with-actions .right-button-panel .ant-dropdown-trigger',
  threeDotsMenuDropdown: dataTestLocator('header-actions-menu'),
  refreshDashboard: dataTestLocator('refresh-dashboard-menu-item'),
  saveAsMenuOption: dataTestLocator('save-as-menu-item'),
  dashboardTab: dataTestLocator('dragdroppable-object'),
  salesDashboardSpecific: {
    vehicleSalesFilterTimeRange: dataTestLocator('time-range-trigger'),
    secondTabSalesDashboard: dataTestLocator('dragdroppable-object'),
  },
  timeRangeModal: {
    rangeTypeField: '.ant-select-selection-item',
    startTimeInputNumber: '.ant-input-number-input',
    datePicker: '.ant-picker-input',
    applyButton: dataTestLocator('date-filter-control__apply-button'),
    radioGroup: '.ant-radio-group',
    radioButton: '.ant-radio',
    finalFilterRangePreviewCustom:
      '.css-c2bup7 > :nth-child(6) > :nth-child(2)',
    finalFilterRangePreviewLast: '.css-c2bup7 > :nth-child(7) > :nth-child(2)',
    finalFilterRangePreviewPrevious:
      '.css-c2bup7 > :nth-child(7) > :nth-child(2)',
  },
  treeMapChartModal: {
    selectItem: '.Select_control',
    selectItemInput: '.Select__control input[type=text]',
    applyButton: '.filter button:not(:disabled)',
    clearItemIcon: '.Select__clear-indicator',
  },
  sliceThreeDots: '[aria-label="More Options"]',
  sliceThreeDotsDropdown: '[role="menu"]',
  editDashboardButton: '[aria-label="Edit dashboard"]',
  starIcon: dataTestLocator('fave-unfave-icon'),
  dashboardHeader: dataTestLocator('dashboard-header'),
  dashboardSectionContainer: dataTestLocator(
    'grid-row-background--transparent',
  ),
  markdownEditor: dataTestLocator('dashboard-markdown-editor'),
  dashboardComponent: dataTestLocator('dashboard-component-chart-holder'),
  tabsList: {
    tabsContainer: dataTestLocator('dashboard-component-tabs'),
    tabsNavList: dataTestLocator('nav-list'),
    tabs: '.ant-tabs-nav-list',
    tab: '.ant-tabs-tab',
  },
};