code: def test_columns_sortable(
      self, bokeh_model_page: BokehModelPage
  ) -> None:
      data = {
          "x": [1, 2, 3, 4],
          "y": [4, 3, 2, 1],
          "d": ["foo", "bar", "baz", "quux"],
      }
      source = ColumnDataSource(data)
      table = DataTable(
          columns=[
              TableColumn(field="x", title="x"),
              TableColumn(field="y", title="y", sortable=False),
              TableColumn(field="d", title="d", sortable=True),
          ],
          source=source,
      )
  
      page = bokeh_model_page(table)
  
      # index column
      h1 = get_table_header(page.driver, table, 1)
      assert "slick-header-sortable" in h1.get_attribute("class")
  
      h2 = get_table_header(page.driver, table, 2)
      assert "slick-header-sortable" in h2.get_attribute("class")
  
      h3 = get_table_header(page.driver, table, 3)
      assert "slick-header-sortable" not in h3.get_attribute("class")
  
      h4 = get_table_header(page.driver, table, 4)
      assert "slick-header-sortable" in h4.get_attribute("class")
  
      assert page.has_no_console_errors()
  
file_path: bokeh/tests/integration/widgets/tables/test_sortable.py
imports: from __future__ import annotations
  import pytest
  from bokeh.models import ColumnDataSource, DataTable, TableColumn
  from tests.support.plugins.project import BokehModelPage
  from tests.support.util.selenium import get_table_cell, get_table_header
label_desc: Use image node_id 1 for calling the Test_DataTableSortable obj's underlying member method code with example usage: obj.test_columns_sortable(bokeh_model_page) without return types