@jupyterlab/galata 5.0.0-alpha.2 → 5.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +192 -31
  2. package/lib/benchmarkReporter.d.ts +1 -0
  3. package/lib/benchmarkReporter.js +34 -39
  4. package/lib/benchmarkReporter.js.map +1 -1
  5. package/lib/benchmarkVLTpl.js +19 -5
  6. package/lib/benchmarkVLTpl.js.map +1 -1
  7. package/lib/contents.d.ts +5 -5
  8. package/lib/contents.js +32 -36
  9. package/lib/contents.js.map +1 -1
  10. package/lib/extension/global.d.ts +197 -0
  11. package/lib/extension/global.js +601 -0
  12. package/lib/extension/global.js.map +1 -0
  13. package/lib/extension/index.d.ts +6 -0
  14. package/lib/extension/index.js +27 -0
  15. package/lib/extension/index.js.map +1 -0
  16. package/lib/extension/tokens.d.ts +232 -0
  17. package/lib/extension/tokens.js +13 -0
  18. package/lib/extension/tokens.js.map +1 -0
  19. package/lib/extension.d.ts +223 -0
  20. package/lib/{global.js → extension.js} +1 -2
  21. package/lib/extension.js.map +1 -0
  22. package/lib/fixtures.d.ts +32 -10
  23. package/lib/fixtures.js +64 -17
  24. package/lib/fixtures.js.map +1 -1
  25. package/lib/galata.d.ts +140 -19
  26. package/lib/galata.js +272 -87
  27. package/lib/galata.js.map +1 -1
  28. package/lib/helpers/activity.d.ts +6 -0
  29. package/lib/helpers/activity.js +19 -5
  30. package/lib/helpers/activity.js.map +1 -1
  31. package/lib/helpers/debuggerpanel.d.ts +4 -0
  32. package/lib/helpers/debuggerpanel.js +16 -0
  33. package/lib/helpers/debuggerpanel.js.map +1 -1
  34. package/lib/helpers/filebrowser.js +8 -2
  35. package/lib/helpers/filebrowser.js.map +1 -1
  36. package/lib/helpers/index.d.ts +1 -0
  37. package/lib/helpers/index.js +6 -1
  38. package/lib/helpers/index.js.map +1 -1
  39. package/lib/helpers/kernel.js +7 -7
  40. package/lib/helpers/kernel.js.map +1 -1
  41. package/lib/helpers/menu.d.ts +7 -0
  42. package/lib/helpers/menu.js +17 -1
  43. package/lib/helpers/menu.js.map +1 -1
  44. package/lib/helpers/notebook.d.ts +6 -4
  45. package/lib/helpers/notebook.js +127 -31
  46. package/lib/helpers/notebook.js.map +1 -1
  47. package/lib/helpers/sidebar.d.ts +8 -1
  48. package/lib/helpers/sidebar.js +33 -15
  49. package/lib/helpers/sidebar.js.map +1 -1
  50. package/lib/helpers/statusbar.js +1 -1
  51. package/lib/helpers/statusbar.js.map +1 -1
  52. package/lib/helpers/style.d.ts +42 -0
  53. package/lib/helpers/style.js +50 -0
  54. package/lib/helpers/style.js.map +1 -0
  55. package/lib/helpers/theme.js +1 -1
  56. package/lib/helpers/theme.js.map +1 -1
  57. package/lib/index.d.ts +5 -2
  58. package/lib/index.js +12 -3
  59. package/lib/index.js.map +1 -1
  60. package/lib/jupyterlabpage.d.ts +29 -4
  61. package/lib/jupyterlabpage.js +38 -22
  62. package/lib/jupyterlabpage.js.map +1 -1
  63. package/lib/playwright-config.js +5 -1
  64. package/lib/playwright-config.js.map +1 -1
  65. package/lib/utils.js +5 -1
  66. package/lib/utils.js.map +1 -1
  67. package/package.json +31 -47
  68. package/src/benchmarkReporter.ts +756 -0
  69. package/src/benchmarkVLTpl.ts +91 -0
  70. package/src/contents.ts +472 -0
  71. package/src/extension.ts +281 -0
  72. package/src/fixtures.ts +387 -0
  73. package/src/galata.ts +1035 -0
  74. package/src/helpers/activity.ts +115 -0
  75. package/src/helpers/debuggerpanel.ts +159 -0
  76. package/src/helpers/filebrowser.ts +228 -0
  77. package/src/helpers/index.ts +15 -0
  78. package/src/helpers/kernel.ts +39 -0
  79. package/src/helpers/logconsole.ts +32 -0
  80. package/src/helpers/menu.ts +228 -0
  81. package/src/helpers/notebook.ts +1217 -0
  82. package/src/helpers/performance.ts +57 -0
  83. package/src/helpers/sidebar.ts +289 -0
  84. package/src/helpers/statusbar.ts +56 -0
  85. package/src/helpers/style.ts +100 -0
  86. package/src/helpers/theme.ts +50 -0
  87. package/src/index.ts +19 -0
  88. package/src/jupyterlabpage.ts +704 -0
  89. package/src/playwright-config.ts +26 -0
  90. package/src/utils.ts +264 -0
  91. package/src/vega-statistics.d.ts +15 -0
  92. package/lib/global.d.ts +0 -23
  93. package/lib/global.js.map +0 -1
  94. package/lib/inpage/tokens.d.ts +0 -135
  95. package/lib/inpage/tokens.js +0 -9
  96. package/lib/inpage/tokens.js.map +0 -1
  97. package/lib/lib-inpage/inpage.js +0 -3957
  98. package/lib/lib-inpage/inpage.js.map +0 -1
  99. package/style/index.css +0 -10
  100. package/style/index.js +0 -10
package/lib/fixtures.js CHANGED
@@ -2,9 +2,33 @@
2
2
  /* eslint-disable @typescript-eslint/ban-ts-comment */
3
3
  // Copyright (c) Jupyter Development Team.
4
4
  // Distributed under the terms of the Modified BSD License.
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
29
  exports.test = void 0;
7
30
  const test_1 = require("@playwright/test");
31
+ const path = __importStar(require("path"));
8
32
  const contents_1 = require("./contents");
9
33
  const galata_1 = require("./galata");
10
34
  /**
@@ -27,7 +51,7 @@ exports.test = test_1.test.extend({
27
51
  *
28
52
  * Default: /lab
29
53
  */
30
- appPath: '/lab',
54
+ appPath: ['/lab', { option: true }],
31
55
  /**
32
56
  * Whether to go to JupyterLab page within the fixture or not.
33
57
  *
@@ -35,7 +59,18 @@ exports.test = test_1.test.extend({
35
59
  *
36
60
  * Note: Setting it to false allows to register new route mock-ups for example.
37
61
  */
38
- autoGoto: true,
62
+ autoGoto: [true, { option: true }],
63
+ /**
64
+ * Mock JupyterLab config in-memory or not.
65
+ *
66
+ * Possible values are:
67
+ * - true (default): JupyterLab config will be mocked on a per test basis
68
+ * - false: JupyterLab config won't be mocked (Be careful it will write config in local files)
69
+ * - Record<string, JSONObject>: Initial JupyterLab data config - Mapping (config section, value).
70
+ *
71
+ * By default the config is stored in-memory.
72
+ */
73
+ mockConfig: [true, { option: true }],
39
74
  /**
40
75
  * Mock JupyterLab state in-memory or not.
41
76
  *
@@ -46,7 +81,7 @@ exports.test = test_1.test.extend({
46
81
  *
47
82
  * By default the state is stored in-memory
48
83
  */
49
- mockState: true,
84
+ mockState: [true, { option: true }],
50
85
  /**
51
86
  * Mock JupyterLab settings in-memory or not.
52
87
  *
@@ -60,7 +95,18 @@ exports.test = test_1.test.extend({
60
95
  * By default the settings are stored in-memory. However the
61
96
  * they are still initialized with the hard drive values.
62
97
  */
63
- mockSettings: galata_1.galata.DEFAULT_SETTINGS,
98
+ mockSettings: [galata_1.galata.DEFAULT_SETTINGS, { option: true }],
99
+ /**
100
+ * Mock JupyterLab user in-memory or not.
101
+ *
102
+ * Possible values are:
103
+ * - true (default): JupyterLab user will be mocked on a per test basis
104
+ * - false: JupyterLab user won't be mocked (It will be a random user so snapshots won't match)
105
+ * - Record<string, unknown>: Initial JupyterLab user - Mapping (user attribute, value).
106
+ *
107
+ * By default the user is stored in-memory.
108
+ */
109
+ mockUser: [true, { option: true }],
64
110
  /**
65
111
  * Galata can keep the uploaded and created files in ``tmpPath`` on
66
112
  * the server root for debugging purpose. By default the files are
@@ -70,7 +116,7 @@ exports.test = test_1.test.extend({
70
116
  * - 'on' - ``tmpPath`` is never deleted
71
117
  * - 'only-on-failure' - ``tmpPath`` is deleted except if a test failed or timed out.
72
118
  */
73
- serverFiles: 'off',
119
+ serverFiles: ['off', { option: true }],
74
120
  /**
75
121
  * Sessions created during the test.
76
122
  *
@@ -80,11 +126,11 @@ exports.test = test_1.test.extend({
80
126
  *
81
127
  * By default the sessions created during a test will be tracked and disposed at the end.
82
128
  */
83
- sessions: async ({ baseURL }, use) => {
129
+ sessions: async ({ request }, use) => {
84
130
  const sessions = new Map();
85
131
  await use(sessions);
86
132
  if (sessions.size > 0) {
87
- await galata_1.galata.Mock.clearRunners(baseURL, [...sessions.keys()], 'sessions');
133
+ await galata_1.galata.Mock.clearRunners(request, [...sessions.keys()], 'sessions');
88
134
  }
89
135
  },
90
136
  /**
@@ -92,15 +138,15 @@ exports.test = test_1.test.extend({
92
138
  *
93
139
  * Possible values are:
94
140
  * - null: The Terminals API won't be mocked
95
- * - Map<string, TerminalsAPI.IModel>: The Terminals created during a test.
141
+ * - Map<string, TerminalAPI.IModel>: The Terminals created during a test.
96
142
  *
97
143
  * By default the Terminals created during a test will be tracked and disposed at the end.
98
144
  */
99
- terminals: async ({ baseURL }, use) => {
145
+ terminals: async ({ request }, use) => {
100
146
  const terminals = new Map();
101
147
  await use(terminals);
102
148
  if (terminals.size > 0) {
103
- await galata_1.galata.Mock.clearRunners(baseURL, [...terminals.keys()], 'terminals');
149
+ await galata_1.galata.Mock.clearRunners(request, [...terminals.keys()], 'terminals');
104
150
  }
105
151
  },
106
152
  /**
@@ -109,11 +155,12 @@ exports.test = test_1.test.extend({
109
155
  * Note: if you override this string, you will need to take care of creating the
110
156
  * folder and cleaning it.
111
157
  */
112
- tmpPath: async ({ baseURL, serverFiles }, use, testInfo) => {
113
- const parts = testInfo.outputDir.split('/');
158
+ tmpPath: async ({ request, serverFiles }, use, testInfo) => {
114
159
  // Remove appended retry part for reproducibility
115
- const testFolder = parts[parts.length - 1].replace(/-retry\d+$/i, '');
116
- const contents = new contents_1.ContentsHelper(baseURL);
160
+ const testFolder = path
161
+ .basename(testInfo.outputDir)
162
+ .replace(/-retry\d+$/i, '');
163
+ const contents = new contents_1.ContentsHelper(request);
117
164
  if (await contents.directoryExists(testFolder)) {
118
165
  await contents.deleteDirectory(testFolder);
119
166
  }
@@ -134,7 +181,7 @@ exports.test = test_1.test.extend({
134
181
  * @param page Playwright Page model
135
182
  * @param helpers JupyterLab helpers
136
183
  */
137
- waitForApplication: async ({ baseURL }, use, testInfo) => {
184
+ waitForApplication: async ({ baseURL }, use) => {
138
185
  const waitIsReady = async (page, helpers) => {
139
186
  await page.waitForSelector('#jupyterlab-splash', {
140
187
  state: 'detached'
@@ -165,8 +212,8 @@ exports.test = test_1.test.extend({
165
212
  * coupling effects between tests.
166
213
  */
167
214
  // @ts-ignore
168
- page: async ({ appPath, autoGoto, baseURL, mockSettings, mockState, page, sessions, terminals, tmpPath, waitForApplication }, use) => {
169
- await use(await galata_1.galata.initTestPage(appPath, autoGoto, baseURL, mockSettings, mockState, page, sessions, terminals, tmpPath, waitForApplication));
215
+ page: async ({ appPath, autoGoto, baseURL, mockConfig, mockSettings, mockState, mockUser, page, sessions, terminals, tmpPath, waitForApplication }, use) => {
216
+ await use(await galata_1.galata.initTestPage(appPath, autoGoto, baseURL, mockConfig, mockSettings, mockState, mockUser, page, sessions, terminals, tmpPath, waitForApplication));
170
217
  }
171
218
  });
172
219
  //# sourceMappingURL=fixtures.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
package/lib/galata.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import * as nbformat from '@jupyterlab/nbformat';
2
- import { Session, TerminalAPI, Workspace } from '@jupyterlab/services';
3
- import { ISettingRegistry } from '@jupyterlab/settingregistry';
4
- import { Browser, Page } from '@playwright/test';
1
+ import type * as nbformat from '@jupyterlab/nbformat';
2
+ import type { Session, TerminalAPI, User, Workspace } from '@jupyterlab/services';
3
+ import type { ISettingRegistry } from '@jupyterlab/settingregistry';
4
+ import type { JSONObject } from '@lumino/coreutils';
5
+ import type { APIRequestContext, Browser, Page } from '@playwright/test';
5
6
  import { ContentsHelper } from './contents';
6
7
  import { PerformanceHelper } from './helpers';
7
8
  import { IJupyterLabPage, IJupyterLabPageFixture } from './jupyterlabpage';
@@ -14,6 +15,7 @@ export declare namespace galata {
14
15
  * - Deactivate codemirror cursor blinking to avoid noise in screenshots
15
16
  */
16
17
  const DEFAULT_SETTINGS: Record<string, any>;
18
+ const DEFAULT_DOCUMENTATION_STATE: Record<string, any>;
17
19
  /**
18
20
  * Sidebar position
19
21
  */
@@ -34,6 +36,77 @@ export declare namespace galata {
34
36
  * Notebook toolbar item type
35
37
  */
36
38
  type NotebookToolbarItemId = DefaultNotebookToolbarItemId | string;
39
+ /**
40
+ * Options to create a new page
41
+ */
42
+ interface INewPageOption {
43
+ /**
44
+ * Application base URL
45
+ */
46
+ baseURL: string;
47
+ /**
48
+ * Playwright browser model
49
+ */
50
+ browser: Browser;
51
+ /**
52
+ * Callback that resolved when the application page is ready
53
+ */
54
+ waitForApplication: (page: Page, helpers: IJupyterLabPage) => Promise<void>;
55
+ /**
56
+ * Application URL path fragment
57
+ *
58
+ * Default: /lab
59
+ */
60
+ appPath?: string;
61
+ /**
62
+ * Whether to go to JupyterLab page within the fixture or not.
63
+ *
64
+ * Default: true
65
+ */
66
+ autoGoto?: boolean;
67
+ /**
68
+ * Mock Jupyter Server configuration in-memory or not.
69
+ *
70
+ * Default true
71
+ */
72
+ mockConfig?: boolean | Record<string, unknown>;
73
+ /**
74
+ * Mock JupyterLab state in-memory or not.
75
+ *
76
+ * Default galata.DEFAULT_SETTINGS
77
+ */
78
+ mockSettings?: boolean | Record<string, unknown>;
79
+ /**
80
+ * Mock JupyterLab settings in-memory or not.
81
+ *
82
+ * Default true
83
+ */
84
+ mockState?: boolean | Record<string, unknown>;
85
+ /**
86
+ * Mock JupyterLab user in-memory or not.
87
+ *
88
+ * Default true
89
+ */
90
+ mockUser?: boolean | Partial<User.IUser>;
91
+ /**
92
+ * Whether to store sessions in memory or not.
93
+ *
94
+ * Default true
95
+ */
96
+ mockSessions?: boolean;
97
+ /**
98
+ * Whether to store terminals in memory or not.
99
+ *
100
+ * Default true
101
+ */
102
+ mockTerminals?: boolean;
103
+ /**
104
+ * Create and delete a temporary path during the page existence
105
+ *
106
+ * Default ''
107
+ */
108
+ tmpPath?: string;
109
+ }
37
110
  /**
38
111
  * Add the Galata helpers to the page model
39
112
  *
@@ -44,25 +117,25 @@ export declare namespace galata {
44
117
  * @returns Playwright page model with Galata helpers
45
118
  */
46
119
  function addHelpersToPage(page: Page, baseURL: string, waitForApplication: (page: Page, helpers: IJupyterLabPage) => Promise<void>, appPath?: string): IJupyterLabPageFixture;
47
- function initTestPage(appPath: string, autoGoto: boolean, baseURL: string, mockSettings: boolean | Record<string, unknown>, mockState: boolean | Record<string, unknown>, page: Page, sessions: Map<string, Session.IModel> | null, terminals: Map<string, TerminalAPI.IModel> | null, tmpPath: string, waitForApplication: (page: Page, helpers: IJupyterLabPage) => Promise<void>): Promise<IJupyterLabPageFixture>;
120
+ function initTestPage(appPath: string, autoGoto: boolean, baseURL: string, mockConfig: boolean | Record<string, unknown>, mockSettings: boolean | Record<string, unknown>, mockState: boolean | Record<string, unknown>, mockUser: boolean | Partial<User.IUser>, page: Page, sessions: Map<string, Session.IModel> | null, terminals: Map<string, TerminalAPI.IModel> | null, tmpPath: string, waitForApplication: (page: Page, helpers: IJupyterLabPage) => Promise<void>): Promise<IJupyterLabPageFixture>;
48
121
  /**
49
122
  * Create a contents REST API helpers object
50
123
  *
51
- * @param baseURL Application base URL
124
+ * @param request Playwright API request context
52
125
  * @param page Playwright page model
53
126
  * @returns Contents REST API helpers
54
127
  */
55
- function newContentsHelper(baseURL: string, page?: Page): ContentsHelper;
128
+ function newContentsHelper(request?: APIRequestContext, page?: Page): ContentsHelper;
56
129
  /**
57
- * Create a page with Galata helpers for the given browser
130
+ * Create a page with Galata helpers for the given browser in a new context.
58
131
  *
59
- * @param browser Playwright browser model
60
- * @param baseURL Application base URL
61
- * @param waitForApplication Callback that resolved when the application page is ready
62
- * @param appPath Application URL path fragment
63
132
  * @returns Playwright page model with Galata helpers
64
133
  */
65
- function newPage(appPath: string, autoGoto: boolean, baseURL: string, browser: Browser, mockSettings: boolean | Record<string, unknown>, mockState: boolean | Record<string, unknown>, sessions: Map<string, Session.IModel> | null, terminals: Map<string, TerminalAPI.IModel> | null, tmpPath: string, waitForApplication: (page: Page, helpers: IJupyterLabPage) => Promise<void>): Promise<IJupyterLabPageFixture>;
134
+ function newPage(options: INewPageOption): Promise<{
135
+ page: IJupyterLabPageFixture;
136
+ sessions: Map<string, Session.IModel> | null;
137
+ terminals: Map<string, TerminalAPI.IModel> | null;
138
+ }>;
66
139
  /**
67
140
  * Create a new performance helper
68
141
  *
@@ -74,12 +147,31 @@ export declare namespace galata {
74
147
  * Regex to capture JupyterLab API call
75
148
  */
76
149
  namespace Routes {
150
+ /**
151
+ * Config API
152
+ *
153
+ * The config section can be found in the named group `section`.
154
+ */
155
+ const config: RegExp;
156
+ /**
157
+ * Contents API
158
+ *
159
+ * The content path can be found in the named group `path`.
160
+ *
161
+ * The path will be prefixed by '/'.
162
+ * The path will be undefined for the root folder.
163
+ */
164
+ const contents: RegExp;
165
+ /**
166
+ * Extensions API
167
+ */
168
+ const extensions: RegExp;
77
169
  /**
78
170
  * Sessions API
79
171
  *
80
172
  * The session id can be found in the named group `id`.
81
173
  *
82
- * The id will be suffixed by '/'.
174
+ * The id will be prefixed by '/'.
83
175
  */
84
176
  const sessions: RegExp;
85
177
  /**
@@ -87,7 +179,7 @@ export declare namespace galata {
87
179
  *
88
180
  * The schema name can be found in the named group `id`.
89
181
  *
90
- * The id will be suffixed by '/'.
182
+ * The id will be prefixed by '/'.
91
183
  */
92
184
  const settings: RegExp;
93
185
  /**
@@ -95,7 +187,7 @@ export declare namespace galata {
95
187
  *
96
188
  * The terminal id can be found in the named group `id`.
97
189
  *
98
- * The id will be suffixed by '/'.
190
+ * The id will be prefixed by '/'.
99
191
  */
100
192
  const terminals: RegExp;
101
193
  /**
@@ -103,7 +195,7 @@ export declare namespace galata {
103
195
  *
104
196
  * The locale can be found in the named group `id`.
105
197
  *
106
- * The id will be suffixed by '/'.
198
+ * The id will be prefixed by '/'.
107
199
  */
108
200
  const translations: RegExp;
109
201
  /**
@@ -111,9 +203,13 @@ export declare namespace galata {
111
203
  *
112
204
  * The space name can be found in the named group `id`.
113
205
  *
114
- * The id will be suffixed by '/'.
206
+ * The id will be prefixed by '/'.
115
207
  */
116
208
  const workspaces: RegExp;
209
+ /**
210
+ * User API
211
+ */
212
+ const user: RegExp;
117
213
  }
118
214
  /**
119
215
  * Notebook generation helpers
@@ -148,15 +244,33 @@ export declare namespace galata {
148
244
  * Mock methods
149
245
  */
150
246
  namespace Mock {
247
+ /**
248
+ * Set last modified attributes one day ago one listing
249
+ * directory content.
250
+ *
251
+ * @param page Page model object
252
+ *
253
+ * #### Notes
254
+ * The goal is to freeze the file browser display
255
+ */
256
+ function freezeContentLastModified(page: Page): Promise<void>;
151
257
  /**
152
258
  * Clear all wanted sessions or terminals.
153
259
  *
154
260
  * @param baseURL Application base URL
155
261
  * @param runners Session or terminal ids to stop
156
262
  * @param type Type of runner; session or terminal
263
+ * @param request API request context
157
264
  * @returns Whether the runners were closed or not
158
265
  */
159
- function clearRunners(baseURL: string, runners: string[], type: 'sessions' | 'terminals'): Promise<boolean>;
266
+ function clearRunners(request: APIRequestContext, runners: string[], type: 'sessions' | 'terminals'): Promise<boolean>;
267
+ /**
268
+ * Mock config route.
269
+ *
270
+ * @param page Page model object
271
+ * @param config In-memory config
272
+ */
273
+ function mockConfig(page: Page, config: Record<string, JSONObject>): Promise<void>;
160
274
  /**
161
275
  * Mock the runners API to display only those created during a test
162
276
  *
@@ -180,5 +294,12 @@ export declare namespace galata {
180
294
  * @param mockedSettings Test mocked settings
181
295
  */
182
296
  function mockSettings(page: Page, settings: ISettingRegistry.IPlugin[], mockedSettings: Record<string, any>): Promise<void>;
297
+ /**
298
+ * Mock user route.
299
+ *
300
+ * @param page Page model object
301
+ * @param user In-memory user
302
+ */
303
+ function mockUser(page: Page, user: User.IUser): Promise<void>;
183
304
  }
184
305
  }