Skip to content

Commit 4b275b2

Browse files
meeseeksmachine3coinsfcollonval
authored
Backport PR jupyterlab#11291 on branch 3.2.x (Fix for terminal theme style) (jupyterlab#11360)
* Backport PR jupyterlab#11291: Fix for terminal theme style * [skip ci] Remove export debugger helpers * Remove import debugger helper Co-authored-by: Piyush Jain <[email protected]> Co-authored-by: Frédéric Collonval <[email protected]>
1 parent 3a2520d commit 4b275b2

10 files changed

+85
-0
lines changed
File renamed without changes.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { test } from '@jupyterlab/galata';
2+
import { expect } from '@playwright/test';
3+
4+
test.describe('Terminal Tests', () => {
5+
test.describe('Open Terminal', () => {
6+
test.beforeEach(async ({ page }) => {
7+
await page.menu.clickMenuItem('File>New>Terminal');
8+
await page.sidebar.openTab('jp-running-sessions');
9+
await page.sidebar.getTab('jp-running-sessions');
10+
const content = await page.sidebar.getContentPanel('left');
11+
await page.waitForSelector(
12+
'span.jp-RunningSessions-itemLabel:has-text("terminals")'
13+
);
14+
await (
15+
await content.$(
16+
'span.jp-RunningSessions-itemLabel:has-text("terminals")'
17+
)
18+
).click();
19+
20+
await page.waitForSelector('div.xterm-viewport');
21+
});
22+
23+
test('Light theme terminal inherit', async ({ page }) => {
24+
expect(await page.screenshot()).toMatchSnapshot('light-term-inherit.png');
25+
});
26+
27+
test('Light theme terminal light', async ({ page }) => {
28+
await page.menu.clickMenuItem('Settings>Terminal Theme>Light');
29+
await page.menu.closeAll();
30+
expect(await page.screenshot()).toMatchSnapshot('light-term-light.png');
31+
});
32+
33+
test('Light theme terminal dark', async ({ page }) => {
34+
await page.menu.clickMenuItem('Settings>Terminal Theme>Dark');
35+
await page.menu.closeAll();
36+
expect(await page.screenshot()).toMatchSnapshot('light-term-dark.png');
37+
});
38+
39+
test('Dark theme terminal inherit', async ({ page }) => {
40+
await page.theme.setDarkTheme();
41+
await page.menu.closeAll();
42+
expect(await page.screenshot()).toMatchSnapshot('dark-term-inherit.png');
43+
});
44+
45+
test('Dark theme terminal light', async ({ page }) => {
46+
await page.theme.setDarkTheme();
47+
await page.menu.clickMenuItem('Settings>Terminal Theme>Light');
48+
await page.menu.closeAll();
49+
expect(await page.screenshot()).toMatchSnapshot('dark-term-light.png');
50+
});
51+
52+
test('Dark theme terminal dark', async ({ page }) => {
53+
await page.theme.setDarkTheme();
54+
await page.menu.clickMenuItem('Settings>Terminal Theme>Dark');
55+
await page.menu.closeAll();
56+
expect(await page.screenshot()).toMatchSnapshot('dark-term-dark.png');
57+
});
58+
});
59+
});
28.1 KB
Loading
28.1 KB
Loading
28.2 KB
Loading
27.8 KB
Loading
27.8 KB
Loading
27.8 KB
Loading

packages/terminal/src/widget.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
5858

5959
this.addClass(TERMINAL_CLASS);
6060

61+
this._setThemeAttribute(theme);
62+
6163
// Create the xterm.
6264
this._term = new Xterm(xtermOptions);
6365
this._fitAddon = new FitAddon();
@@ -78,6 +80,17 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
7880
}
7981
}
8082

83+
private _setThemeAttribute(theme: string | null | undefined) {
84+
if (this.isDisposed) {
85+
return;
86+
}
87+
88+
this.node.setAttribute(
89+
'data-term-theme',
90+
theme ? theme.toLowerCase() : 'inherit'
91+
);
92+
}
93+
8194
private _initialConnection() {
8295
if (this.isDisposed) {
8396
return;
@@ -141,6 +154,7 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
141154
'theme',
142155
Private.getXTermTheme(value as ITerminal.Theme)
143156
);
157+
this._setThemeAttribute(value as ITerminal.Theme);
144158
break;
145159
default:
146160
this._term.setOption(option, value);

packages/terminal/style/base.css

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,15 @@
1111
.jp-Terminal-body {
1212
padding: 8px;
1313
}
14+
15+
[data-term-theme='inherit'] .xterm .xterm-screen canvas {
16+
border: 1px solid var(--jp-layout-color0);
17+
}
18+
19+
[data-term-theme='light'] .xterm .xterm-screen canvas {
20+
border: 1px solid #fff;
21+
}
22+
23+
[data-term-theme='dark'] .xterm .xterm-screen canvas {
24+
border: 1px solid #000;
25+
}

0 commit comments

Comments
 (0)