or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

benchmark.mdflows.mdindex.mdscenarios.mdselectors.md
tile.json

scenarios.mddocs/

Test Scenarios

Structured test scenario creation with automatic setup, cleanup, and context management for organizing complex Grafana e2e test suites.

Capabilities

e2eScenario Function

Creates structured e2e test scenarios with automatic hooks for setup and cleanup.

/**
 * Creates structured e2e test scenarios with automatic hooks
 * @param args - Scenario configuration object
 */
function e2eScenario(args: ScenarioArguments): void;

interface ScenarioArguments {
  /** Test suite name (describe block) */
  describeName: string;
  /** Test case name (it block) */
  itName: string;
  /** Test implementation function */
  scenario: () => void;
  /** Skip execution if true */
  skipScenario?: boolean;
  /** Auto-add data source for test (default: false) */
  addScenarioDataSource?: boolean;
  /** Auto-add dashboard for test (default: false) */
  addScenarioDashBoard?: boolean;
  /** Use API login instead of UI (default: true) */
  loginViaApi?: boolean;
}

Usage Examples:

import { e2e } from "@grafana/e2e";

// Basic scenario
e2e.scenario({
  describeName: "Dashboard Tests",
  itName: "should create a dashboard",
  scenario: () => {
    e2e.flows.addDashboard();
    e2e.pages.Dashboard.url().should("be.visible");
  }
});

// Scenario with auto-setup
e2e.scenario({
  describeName: "Panel Tests",
  itName: "should add panel to dashboard",
  addScenarioDashBoard: true,
  scenario: () => {
    e2e.flows.addPanel({
      visualization: "Table",
      panelTitle: "Test Panel"
    });
    e2e.components.Panels.Panel.title("Test Panel").should("be.visible");
  }
});

// Scenario with data source setup
e2e.scenario({
  describeName: "Data Source Tests",
  itName: "should configure data source",
  addScenarioDataSource: true,
  loginViaApi: false, // Use UI login
  scenario: () => {
    // Test logic here - data source is automatically available
    e2e.pages.DataSources.url().should("contain", "/datasources");
  }
});

Scenario Context Management

Functions for managing test scenario state and cleanup tracking.

/**
 * Get current scenario context with cleanup information
 * @returns Current scenario context
 */
function getScenarioContext(): ScenarioContext;

/**
 * Update scenario context with partial data
 * @param context - Partial context data to merge
 */
function setScenarioContext(context: Partial<ScenarioContext>): void;

interface ScenarioContext {
  /** Dashboards created during test for cleanup */
  addedDashboards: DeleteDashboardConfig[];
  /** Data sources created during test for cleanup */
  addedDataSources: DeleteDataSourceConfig[];
  /** Title of last dashboard added */
  lastAddedDashboard: string;
  /** UID of last dashboard added */
  lastAddedDashboardUid: string;
  /** Name of last data source added */
  lastAddedDataSource: string;
  /** ID of last data source added */
  lastAddedDataSourceId: string;
  /** Flag indicating user preferences were changed */
  hasChangedUserPreferences: boolean;
}

Usage Examples:

import { e2e } from "@grafana/e2e";

// Get current context
const context = e2e.getScenarioContext();
console.log("Last dashboard:", context.lastAddedDashboard);

// Update context
e2e.setScenarioContext({
  lastAddedDashboard: "My Test Dashboard",
  hasChangedUserPreferences: true
});

// Access context in test
e2e.scenario({
  describeName: "Context Tests",
  itName: "should track dashboard creation",
  scenario: () => {
    e2e.flows.addDashboard({ title: "Test Dashboard" });
    
    const context = e2e.getScenarioContext();
    expect(context.lastAddedDashboard).to.equal("Test Dashboard");
    expect(context.addedDashboards).to.have.length.greaterThan(0);
  }
});

Automatic Cleanup

The scenario system automatically tracks resources created during tests:

  • Dashboards: Added to addedDashboards array for cleanup
  • Data Sources: Added to addedDataSources array for cleanup
  • User Preferences: Tracked via hasChangedUserPreferences flag
  • Context State: Maintained across scenario lifecycle

Use e2e.flows.revertAllChanges() to clean up all tracked resources at the end of tests.