Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3ab7559
Auto-merge main back to develop post release
estohlmann Dec 19, 2025
70a364e
Update e2e url
bedanley Dec 20, 2025
059370d
fix session history
bedanley Jan 5, 2026
71b0d7d
Update configuration labels
estohlmann Jan 5, 2026
1b69692
Add AdminRoute wrapper around McpWorkbench component
estohlmann Jan 5, 2026
738642c
added instructions on how to accept the self signed cert in the brows…
estohlmann Jan 7, 2026
3113d47
adding access control details to our getting started documentation
estohlmann Jan 7, 2026
2db5aa1
Feature/cypress tests (#647)
bedanley Jan 7, 2026
c8fffd1
Bug/session reload (#656)
bedanley Jan 7, 2026
8b9e035
Add Tailwind CSS overrides and GFM markdown (#657)
bedanley Jan 8, 2026
2bc3ae0
Bug/markdown css module (#663)
bedanley Jan 8, 2026
63f270e
API token user metrics
jmharold Jan 8, 2026
93d1198
break out of auto scrolling (#664)
jmharold Jan 8, 2026
c075e44
cypress smoke refactor
bedanley Jan 8, 2026
0d9bf61
Update e2e secrets
bedanley Jan 9, 2026
e8f159f
Update e2e video location
bedanley Jan 9, 2026
c1f9ef7
fix: remove await from publish_metrics_event
Jan 9, 2026
3386b4e
documentation updates
estohlmann Jan 9, 2026
fb3f3ce
Fix/light dark themes (#667)
jmharold Jan 9, 2026
605d4c1
Add prompt template test
bedanley Jan 12, 2026
3f8331a
Updating version for release v6.1.1
estohlmann Jan 12, 2026
cf99b6e
unifying approach to checking theme (#671)
jmharold Jan 12, 2026
1fad7f6
changelog
estohlmann Jan 12, 2026
d8029a3
Merge branch 'release/v6.1.1' of github.com:awslabs/LISA into release…
estohlmann Jan 12, 2026
3448177
fixing new session bug
estohlmann Jan 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 0 additions & 42 deletions .eslintrc.json

This file was deleted.

9 changes: 6 additions & 3 deletions .github/workflows/code.end-to-end-test.nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,19 @@ jobs:
run: npm ci
- name: Run Cypress E2E Suite
env:
TEST_ACCOUNT_PASSWORD: ${{ secrets.TEST_ACCOUNT_PASSWORD }}
ADMIN_USER_NAME: ${{ secrets.ADMIN_USER_NAME }}
ADMIN_PASSWORD: ${{ secrets.ADMIN_PASSWORD }}
USER_NAME: ${{ secrets.USER_NAME }}
USER_PASSWORD: ${{ secrets.USER_PASSWORD }}
run: npx cypress run --config-file cypress/cypress.e2e.config.ts
- name: Archive Cypress videos & screenshots
if: failure() || always()
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v4
with:
name: cypress-e2e-artifacts
path: |
cypress/e2e/videos
cypress/e2e/screenshots
cypress/videos/e2e
cypress/screenshots/e2e

notify_e2e_end:
name: 🔔 E2E Tests Finished
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,7 @@ config-custom.yaml
# Test Artifacts
/cypress/videos
/cypress/screenshots
/cypress/logs

# Cypress local environment
/cypress/.env.local
3 changes: 2 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@ repos:
files: \.[jt]sx?$
types: [file]
args:
- --max-warnings=10
- --max-warnings=20
- --no-warn-ignored
- --fix

# - repo: https://github.com/Lucas-C/pre-commit-hooks-safety
Expand Down
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
# v6.1.1

## UI Cleanup
### [Light/Dark Theme Fixes]
Some UI elements in light mode were being rendered in a dark theme, such as code blocks, Mermaid tables, message metadata, etc. This change ensures elements render in their appropriate theme based on the user's selection.

### [Auto-Scrolling Fix]
Allows users to break out of auto-scrolling during streamed responses by scrolling away from the bottom of the screen. Users can reset auto-scrolling by scrolling back down to the bottom of the stream.

### [API Token Dashboard Metrics]
This change ensures that users who programmatically interact with LISA are captured in the metrics dashboard. Additionally, it introduces a reorganization of the metrics dashboard to enhance readability.

### [Cypress Smoke Test Refactor]
Significantly enhanced the smoke tests to be more reliable. Added new E2E tests that reuse the smoke tests and a new model creation workflow E2E test.

### [Session History Reload Fix]
Fixed session history not loading when selected, and updated session hooks to correctly invalidate and retrieve the session after selecting a new session.

### [Markdown Table Support]
Introduced GitHub Flavored Markdown (GFM) to support markdown tables. Added Tailwind CSS overrides to render markdown in chat prompts. Enhanced the system prompt to render math expressions without additional prompting.


## Key Changes
- **Documentation**: Added access control details to the Getting Started section along with general updates, added instructions on how to accept the self-signed certificate in the browser, and updates to configuration labels.
- **Cypress Tests**: Added additional smoke tests to ensure admin pages load with data, chat prompts render responses, chat sessions are selectable and load properly, and non-admins can't navigate to admin pages.
- **Administrative**: Added an `AdminRoute` wrapper around the `McpWorkbench` component.

## Acknowledgements
* @bedanley
* @estohlmann
* @jmharold

**Full Changelog**: https://github.com/awslabs/LISA/compare/v6.1.0..v6.1.1

# v6.1.0

## ⚠️ Important: Major Dependency Updates
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ define print_config
endef

## Deploy all infrastructure
deploy: installPythonRequirements dockerCheck dockerLogin cleanMisc modelCheck buildNpmModules
deploy: install dockerCheck dockerLogin cleanMisc modelCheck buildNpmModules
$(call print_config)
ifeq ($(HEADLESS),true)
npx cdk deploy ${STACK} $(if $(PROFILE),--profile ${PROFILE}) --require-approval never -c ${ENV}='$(shell echo '${${ENV}}')';
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.1.0
6.1.1
14 changes: 14 additions & 0 deletions cypress/.env.local.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Cypress E2E Test Configuration
# Copy this file to .env.local and update with your local values
# .env.local is gitignored and will not be committed

# Base URL for your local instance
BASE_URL=http://localhost:8080

# Admin test account credentials
ADMIN_USER_NAME=admin@example.com
ADMIN_PASSWORD=your-admin-password-here

# Non-admin test account credentials
USER_NAME=testuser@example.com
USER_PASSWORD=your-user-password-here
1 change: 0 additions & 1 deletion cypress/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ DevTools listening on ws://127.0.0.1:51352/devtools/browser/2f804c68-414e-4004-9
│ Node Version: v18.20.4 (/.../.nvm/versions/node/v18.20.4/bin/node) │
│ Specs: 1 found (administration.e2e.spec.ts) │
│ Searched: src/e2e/specs/**/*.e2e.spec.ts │
│ Experiments: experimentalStudio=true │
└────────────────────────────────────────────────────────────────────────────────────────────────┘


Expand Down
20 changes: 17 additions & 3 deletions cypress/cypress.e2e.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,41 @@
/// <reference types="node" />

import { defineConfig } from 'cypress';
import * as dotenv from 'dotenv';
import * as fs from 'fs';
import path from 'path';

const PROJECT_ROOT = path.resolve(__dirname);

// Load local environment file if it exists
const envPath = path.join(PROJECT_ROOT, '.env.local');
if (fs.existsSync(envPath)) {
dotenv.config({ path: envPath });
}

export default defineConfig({
video: true, // turn on video recording
videoCompression: true,
videosFolder: `${PROJECT_ROOT}/videos/e2e`, // where to save .mp4 files
screenshotOnRunFailure: true, // auto‑snap on any test failure
screenshotsFolder: `${PROJECT_ROOT}/screenshots/e2e`,
trashAssetsBeforeRuns: true, // wipe out old videos/screenshots
defaultCommandTimeout: 30000, // 30 seconds for real API calls
requestTimeout: 30000, // 30 seconds for API requests
responseTimeout: 30000, // 30 seconds for API responses
chromeWebSecurity: false, // Disable web security to allow cross-origin requests
e2e: {
specPattern: `${PROJECT_ROOT}/src/e2e/specs/**/*.e2e.spec.ts`,
supportFile: `${PROJECT_ROOT}/src/e2e/support/index.ts`,
experimentalStudio: true,
fixturesFolder: `${PROJECT_ROOT}/src/e2e/fixtures`,
setupNodeEvents () {
},
baseUrl: 'https://5bma74uv9c.execute-api.us-east-1.amazonaws.com/dev',
baseUrl: process.env.BASE_URL || 'https://chat.dev.lisa.aiml-adc.aws.dev',
env: {
TEST_ACCOUNT_PASSWORD: process.env.TEST_ACCOUNT_PASSWORD,
ADMIN_USER_NAME: process.env.ADMIN_USER_NAME,
ADMIN_PASSWORD: process.env.ADMIN_PASSWORD,
USER_NAME: process.env.USER_NAME,
USER_PASSWORD: process.env.USER_PASSWORD,
},
},
});
1 change: 0 additions & 1 deletion cypress/cypress.smoke.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ export default defineConfig({
e2e: {
specPattern: `${PROJECT_ROOT}/src/smoke/specs/**/*.smoke.spec.ts`,
supportFile: `${PROJECT_ROOT}/src/smoke/support/index.ts`,
experimentalStudio: true,
fixturesFolder: `${PROJECT_ROOT}/src/smoke/fixtures`,
setupNodeEvents () {
},
Expand Down
1 change: 1 addition & 0 deletions cypress/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"devDependencies": {
"@types/node": "^24.10.2",
"cypress": "^15.7.1",
"dotenv": "^17.2.3",
"lint-staged": "^16.2.7",
"lodash": "^4.17.21"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,31 +17,22 @@
/// <reference types="cypress" />

/**
* E2E suite for Administration features:
* - Ensures admin users can view and interact with the Administration menu
* - Verifies correct menu items and expansion behavior
* - Confirms non-admin users do not see the Administration option
* E2E suite for Admin Navigation features.
* Uses shared test suite against real deployment.
*/
import { runAdminTests } from '../../shared/specs/admin.shared.spec';

import {
checkAdminButtonExists,
expandAdminMenu,
checkNoAdminButton,
} from '../../support/adminHelpers';

describe('Administration features (Smoke)', () => {
it('Admin sees the button', () => {
cy.loginAs('admin');
checkAdminButtonExists();
describe('Admin Navigation (E2E)', () => {
before(() => {
cy.clearAllSessionStorage();
});

it('Admin can expand menu', () => {
beforeEach(() => {
cy.loginAs('admin');
expandAdminMenu();
});

it('Non-admin does not see the button', () => {
cy.loginAs('user');
checkNoAdminButton();
runAdminTests({
expectMinItems: false,
verifyFixtureData: false,
});
});
36 changes: 36 additions & 0 deletions cypress/src/e2e/specs/bedrock-model-workflow.e2e.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/**
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

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.
*/

/// <reference types="cypress" />

/**
* E2E test for Bedrock model creation and chat workflow.
* Creates a Bedrock model, then uses it in chat.
*/

import { runBedrockModelWorkflowTests } from '../../shared/specs/bedrock-model-workflow.shared.spec';

describe('Bedrock Model Workflow (E2E)', () => {
before(() => {
cy.clearAllSessionStorage();
});

beforeEach(() => {
cy.loginAs('admin');
});

runBedrockModelWorkflowTests();
});
37 changes: 37 additions & 0 deletions cypress/src/e2e/specs/chat.e2e.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

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.
*/

/// <reference types="cypress" />

/**
* E2E suite for Chat Page features.
* Uses shared test suite against real deployment.
*/
import { runChatTests } from '../../shared/specs/chat.shared.spec';

describe('Chat Page (E2E)', () => {
before(() => {
cy.clearAllSessionStorage();
});

beforeEach(() => {
cy.loginAs('user');
});

runChatTests({
verifyFixtureData: false,
});
});
37 changes: 37 additions & 0 deletions cypress/src/e2e/specs/user.e2e.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

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.
*/

/// <reference types="cypress" />

/**
* E2E suite for User role features.
* Uses shared test suite against real deployment.
*/
import { runUserTests } from '../../shared/specs/user.shared.spec';

describe('User features (E2E)', () => {
before(() => {
cy.clearAllSessionStorage();
});

beforeEach(() => {
cy.loginAs('user');
});

runUserTests({
verifyFixtureData: false,
});
});
Loading
Loading