@metamask/snaps-jest 0.35.1-flask.1

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 (89) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +587 -0
  3. package/dist/cjs/environment.js +205 -0
  4. package/dist/cjs/environment.js.map +1 -0
  5. package/dist/cjs/helpers.js +67 -0
  6. package/dist/cjs/helpers.js.map +1 -0
  7. package/dist/cjs/index.js +42 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/internals/environment.js +19 -0
  10. package/dist/cjs/internals/environment.js.map +1 -0
  11. package/dist/cjs/internals/index.js +28 -0
  12. package/dist/cjs/internals/index.js.map +1 -0
  13. package/dist/cjs/internals/interface.js +103 -0
  14. package/dist/cjs/internals/interface.js.map +1 -0
  15. package/dist/cjs/internals/logger.js +14 -0
  16. package/dist/cjs/internals/logger.js.map +1 -0
  17. package/dist/cjs/internals/network.js +146 -0
  18. package/dist/cjs/internals/network.js.map +1 -0
  19. package/dist/cjs/internals/request.js +121 -0
  20. package/dist/cjs/internals/request.js.map +1 -0
  21. package/dist/cjs/internals/server.js +75 -0
  22. package/dist/cjs/internals/server.js.map +1 -0
  23. package/dist/cjs/internals/structs.js +124 -0
  24. package/dist/cjs/internals/structs.js.map +1 -0
  25. package/dist/cjs/internals/types.js +6 -0
  26. package/dist/cjs/internals/types.js.map +1 -0
  27. package/dist/cjs/internals/wait-for.js +63 -0
  28. package/dist/cjs/internals/wait-for.js.map +1 -0
  29. package/dist/cjs/matchers.js +117 -0
  30. package/dist/cjs/matchers.js.map +1 -0
  31. package/dist/cjs/options.js +29 -0
  32. package/dist/cjs/options.js.map +1 -0
  33. package/dist/cjs/setup.js +10 -0
  34. package/dist/cjs/setup.js.map +1 -0
  35. package/dist/cjs/types.js +13 -0
  36. package/dist/cjs/types.js.map +1 -0
  37. package/dist/esm/environment.js +182 -0
  38. package/dist/esm/environment.js.map +1 -0
  39. package/dist/esm/helpers.js +82 -0
  40. package/dist/esm/helpers.js.map +1 -0
  41. package/dist/esm/index.js +6 -0
  42. package/dist/esm/index.js.map +1 -0
  43. package/dist/esm/internals/environment.js +14 -0
  44. package/dist/esm/internals/environment.js.map +1 -0
  45. package/dist/esm/internals/index.js +12 -0
  46. package/dist/esm/internals/index.js.map +1 -0
  47. package/dist/esm/internals/interface.js +100 -0
  48. package/dist/esm/internals/interface.js.map +1 -0
  49. package/dist/esm/internals/logger.js +4 -0
  50. package/dist/esm/internals/logger.js.map +1 -0
  51. package/dist/esm/internals/network.js +141 -0
  52. package/dist/esm/internals/network.js.map +1 -0
  53. package/dist/esm/internals/request.js +120 -0
  54. package/dist/esm/internals/request.js.map +1 -0
  55. package/dist/esm/internals/server.js +68 -0
  56. package/dist/esm/internals/server.js.map +1 -0
  57. package/dist/esm/internals/structs.js +100 -0
  58. package/dist/esm/internals/structs.js.map +1 -0
  59. package/dist/esm/internals/types.js +3 -0
  60. package/dist/esm/internals/types.js.map +1 -0
  61. package/dist/esm/internals/wait-for.js +63 -0
  62. package/dist/esm/internals/wait-for.js.map +1 -0
  63. package/dist/esm/matchers.js +108 -0
  64. package/dist/esm/matchers.js.map +1 -0
  65. package/dist/esm/options.js +26 -0
  66. package/dist/esm/options.js.map +1 -0
  67. package/dist/esm/setup.js +6 -0
  68. package/dist/esm/setup.js.map +1 -0
  69. package/dist/esm/types.js +3 -0
  70. package/dist/esm/types.js.map +1 -0
  71. package/dist/types/environment.d.ts +53 -0
  72. package/dist/types/helpers.d.ts +28 -0
  73. package/dist/types/index.d.ts +4 -0
  74. package/dist/types/internals/environment.d.ts +7 -0
  75. package/dist/types/internals/index.d.ts +9 -0
  76. package/dist/types/internals/interface.d.ts +25 -0
  77. package/dist/types/internals/logger.d.ts +2 -0
  78. package/dist/types/internals/network.d.ts +87 -0
  79. package/dist/types/internals/request.d.ts +58 -0
  80. package/dist/types/internals/server.d.ts +14 -0
  81. package/dist/types/internals/structs.d.ts +164 -0
  82. package/dist/types/internals/types.d.ts +19 -0
  83. package/dist/types/internals/wait-for.d.ts +38 -0
  84. package/dist/types/matchers.d.ts +29 -0
  85. package/dist/types/options.d.ts +92 -0
  86. package/dist/types/setup.d.ts +1 -0
  87. package/dist/types/types.d.ts +241 -0
  88. package/jest-preset.js +18 -0
  89. package/package.json +120 -0
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ SnapsEnvironment: function() {
13
+ return SnapsEnvironment;
14
+ },
15
+ default: function() {
16
+ return _default;
17
+ }
18
+ });
19
+ const _utils = require("@metamask/utils");
20
+ const _jestenvironmentnode = /*#__PURE__*/ _interop_require_default(require("jest-environment-node"));
21
+ const _webdriverio = require("webdriverio");
22
+ const _internals = require("./internals");
23
+ const _options = require("./options");
24
+ function _check_private_redeclaration(obj, privateCollection) {
25
+ if (privateCollection.has(obj)) {
26
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
27
+ }
28
+ }
29
+ function _class_apply_descriptor_get(receiver, descriptor) {
30
+ if (descriptor.get) {
31
+ return descriptor.get.call(receiver);
32
+ }
33
+ return descriptor.value;
34
+ }
35
+ function _class_apply_descriptor_set(receiver, descriptor, value) {
36
+ if (descriptor.set) {
37
+ descriptor.set.call(receiver, value);
38
+ } else {
39
+ if (!descriptor.writable) {
40
+ throw new TypeError("attempted to set read only private field");
41
+ }
42
+ descriptor.value = value;
43
+ }
44
+ }
45
+ function _class_extract_field_descriptor(receiver, privateMap, action) {
46
+ if (!privateMap.has(receiver)) {
47
+ throw new TypeError("attempted to " + action + " private field on non-instance");
48
+ }
49
+ return privateMap.get(receiver);
50
+ }
51
+ function _class_private_field_get(receiver, privateMap) {
52
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
53
+ return _class_apply_descriptor_get(receiver, descriptor);
54
+ }
55
+ function _class_private_field_init(obj, privateMap, value) {
56
+ _check_private_redeclaration(obj, privateMap);
57
+ privateMap.set(obj, value);
58
+ }
59
+ function _class_private_field_set(receiver, privateMap, value) {
60
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
61
+ _class_apply_descriptor_set(receiver, descriptor, value);
62
+ return value;
63
+ }
64
+ function _define_property(obj, key, value) {
65
+ if (key in obj) {
66
+ Object.defineProperty(obj, key, {
67
+ value: value,
68
+ enumerable: true,
69
+ configurable: true,
70
+ writable: true
71
+ });
72
+ } else {
73
+ obj[key] = value;
74
+ }
75
+ return obj;
76
+ }
77
+ function _interop_require_default(obj) {
78
+ return obj && obj.__esModule ? obj : {
79
+ default: obj
80
+ };
81
+ }
82
+ /* eslint-enable */ const log = (0, _utils.createModuleLogger)(_internals.rootLogger, 'environment');
83
+ var _options1 = /*#__PURE__*/ new WeakMap(), _server = /*#__PURE__*/ new WeakMap();
84
+ class SnapsEnvironment extends _jestenvironmentnode.default {
85
+ /**
86
+ * Set up the environment. This starts the built-in HTTP server, and creates a
87
+ * new browser instance.
88
+ */ async setup() {
89
+ await super.setup();
90
+ if (_class_private_field_get(this, _options1).server.enabled) {
91
+ log('Starting server.');
92
+ _class_private_field_set(this, _server, await (0, _internals.startServer)(_class_private_field_get(this, _options1).server));
93
+ }
94
+ const args = [];
95
+ if (_class_private_field_get(this, _options1).browser.headless) {
96
+ args.push('--headless', '--disable-gpu');
97
+ }
98
+ log('Starting browser.');
99
+ this.browser = await (0, _webdriverio.remote)({
100
+ logLevel: 'error',
101
+ capabilities: {
102
+ browserName: 'chrome',
103
+ // eslint-disable-next-line @typescript-eslint/naming-convention
104
+ 'goog:chromeOptions': {
105
+ args
106
+ }
107
+ }
108
+ });
109
+ this.global.browser = this.browser;
110
+ this.global.snapsEnvironment = this;
111
+ }
112
+ /**
113
+ * Tear down the environment. This closes the browser, and stops the built-in
114
+ * HTTP server.
115
+ */ async teardown() {
116
+ if (_class_private_field_get(this, _options1).keepAlive) {
117
+ log('Not tearing down environment because keepAlive is enabled.');
118
+ return;
119
+ }
120
+ log('Closing browser, and stopping server.');
121
+ await this.browser?.deleteSession();
122
+ _class_private_field_get(this, _server)?.close();
123
+ await super.teardown();
124
+ }
125
+ /**
126
+ * Get the URL to the simulator, including the environment URL.
127
+ *
128
+ * @returns The simulator URL.
129
+ * @throws If the server is not running.
130
+ */ get url() {
131
+ (0, _utils.assert)(_class_private_field_get(this, _server), 'Server is not running.');
132
+ const { port } = _class_private_field_get(this, _server).address();
133
+ const simulatorUrl = _class_private_field_get(this, _options1).simulatorUrl ?? `http://localhost:${port}/simulator/`;
134
+ const executionEnvironmentUrl = _class_private_field_get(this, _options1).executionEnvironmentUrl ?? `http://localhost:${port}/environment/`;
135
+ return `${simulatorUrl}?environment=${encodeURIComponent(executionEnvironmentUrl)}`;
136
+ }
137
+ /**
138
+ * Get the snap ID for the current environment, which is used if no snap ID is
139
+ * passed to {@link installSnap}. This assumes that the built-in server is
140
+ * running.
141
+ *
142
+ * @returns The snap ID.
143
+ * @throws If the server is not running.
144
+ */ get snapId() {
145
+ (0, _utils.assert)(_class_private_field_get(this, _server), 'You must specify a snap ID, because the built-in server is not running.');
146
+ const { port } = _class_private_field_get(this, _server).address();
147
+ return `local:http://localhost:${port}`;
148
+ }
149
+ /**
150
+ * Create a new page, and attach logging handlers.
151
+ *
152
+ * @param url - The page URL. Defaults to the specified Snaps Simulator URL,
153
+ * or the default simulator URL if none is specified.
154
+ * @param timeout - The page timeout, in milliseconds.
155
+ * @returns The new page.
156
+ */ async createPage(url = this.url, timeout = 10000) {
157
+ const puppeteer = await this.browser.getPuppeteer();
158
+ const page = await puppeteer.newPage();
159
+ page.setDefaultTimeout(timeout);
160
+ page.setDefaultNavigationTimeout(timeout);
161
+ // Give the page permission to show notifications. This is required for
162
+ // testing `snap_notify`.
163
+ await page.browserContext().overridePermissions(url, [
164
+ 'notifications'
165
+ ]);
166
+ // `networkidle0` is used to ensure that the page is fully loaded. This
167
+ // makes it wait for no requests to be made, which guarantees that the page
168
+ // is ready.
169
+ await page.goto(url, {
170
+ waitUntil: 'networkidle0'
171
+ });
172
+ const browserLog = (0, _utils.createModuleLogger)(_internals.rootLogger, 'browser');
173
+ page// This is fired when the page calls `console.log` or similar.
174
+ .on('console', (message)=>{
175
+ browserLog(`[${message.type()}] ${message.text()}`);
176
+ })// This is fired when the page throws an error.
177
+ .on('pageerror', ({ message })=>{
178
+ browserLog(`[page error] ${message}`);
179
+ });
180
+ return page;
181
+ }
182
+ /**
183
+ * Constructor.
184
+ *
185
+ * @param options - The environment options.
186
+ * @param context - The environment context.
187
+ */ constructor(options, context){
188
+ super(options, context);
189
+ // `browser` is always set in the environment setup function. To avoid needing
190
+ // to check for `undefined` everywhere, we use a type assertion here.
191
+ _define_property(this, "browser", void 0);
192
+ _class_private_field_init(this, _options1, {
193
+ writable: true,
194
+ value: void 0
195
+ });
196
+ _class_private_field_init(this, _server, {
197
+ writable: true,
198
+ value: void 0
199
+ });
200
+ _class_private_field_set(this, _options1, (0, _options.getOptions)(options.projectConfig.testEnvironmentOptions));
201
+ }
202
+ }
203
+ const _default = SnapsEnvironment;
204
+
205
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/environment.ts"],"sourcesContent":["import { EnvironmentContext, JestEnvironmentConfig } from '@jest/environment';\nimport { assert, createModuleLogger } from '@metamask/utils';\nimport { Server } from 'http';\nimport NodeEnvironment from 'jest-environment-node';\nimport { AddressInfo } from 'net';\nimport { Browser } from 'puppeteer';\nimport { remote } from 'webdriverio';\n\nimport { rootLogger, startServer } from './internals';\nimport { getOptions, SnapsEnvironmentOptions } from './options';\n\n/* eslint-disable */\ndeclare global {\n const browser: WebdriverIO.Browser;\n const snapsEnvironment: SnapsEnvironment;\n}\n/* eslint-enable */\n\nconst log = createModuleLogger(rootLogger, 'environment');\n\nexport class SnapsEnvironment extends NodeEnvironment {\n // `browser` is always set in the environment setup function. To avoid needing\n // to check for `undefined` everywhere, we use a type assertion here.\n browser!: WebdriverIO.Browser;\n\n #options: SnapsEnvironmentOptions;\n\n #server: Server | undefined;\n\n /**\n * Constructor.\n *\n * @param options - The environment options.\n * @param context - The environment context.\n */\n constructor(options: JestEnvironmentConfig, context: EnvironmentContext) {\n super(options, context);\n this.#options = getOptions(options.projectConfig.testEnvironmentOptions);\n }\n\n /**\n * Set up the environment. This starts the built-in HTTP server, and creates a\n * new browser instance.\n */\n async setup() {\n await super.setup();\n\n if (this.#options.server.enabled) {\n log('Starting server.');\n this.#server = await startServer(this.#options.server);\n }\n\n const args = [];\n if (this.#options.browser.headless) {\n args.push('--headless', '--disable-gpu');\n }\n\n log('Starting browser.');\n this.browser = await remote({\n logLevel: 'error',\n capabilities: {\n browserName: 'chrome',\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'goog:chromeOptions': {\n args,\n },\n },\n });\n\n this.global.browser = this.browser;\n this.global.snapsEnvironment = this;\n }\n\n /**\n * Tear down the environment. This closes the browser, and stops the built-in\n * HTTP server.\n */\n async teardown() {\n if (this.#options.keepAlive) {\n log('Not tearing down environment because keepAlive is enabled.');\n return;\n }\n\n log('Closing browser, and stopping server.');\n await this.browser?.deleteSession();\n this.#server?.close();\n\n await super.teardown();\n }\n\n /**\n * Get the URL to the simulator, including the environment URL.\n *\n * @returns The simulator URL.\n * @throws If the server is not running.\n */\n get url() {\n assert(this.#server, 'Server is not running.');\n\n const { port } = this.#server.address() as AddressInfo;\n const simulatorUrl =\n this.#options.simulatorUrl ?? `http://localhost:${port}/simulator/`;\n\n const executionEnvironmentUrl =\n this.#options.executionEnvironmentUrl ??\n `http://localhost:${port}/environment/`;\n\n return `${simulatorUrl}?environment=${encodeURIComponent(\n executionEnvironmentUrl,\n )}`;\n }\n\n /**\n * Get the snap ID for the current environment, which is used if no snap ID is\n * passed to {@link installSnap}. This assumes that the built-in server is\n * running.\n *\n * @returns The snap ID.\n * @throws If the server is not running.\n */\n get snapId() {\n assert(\n this.#server,\n 'You must specify a snap ID, because the built-in server is not running.',\n );\n\n const { port } = this.#server.address() as AddressInfo;\n return `local:http://localhost:${port}`;\n }\n\n /**\n * Create a new page, and attach logging handlers.\n *\n * @param url - The page URL. Defaults to the specified Snaps Simulator URL,\n * or the default simulator URL if none is specified.\n * @param timeout - The page timeout, in milliseconds.\n * @returns The new page.\n */\n async createPage(url: string = this.url, timeout = 10000) {\n const puppeteer = (await this.browser.getPuppeteer()) as unknown as Browser;\n const page = await puppeteer.newPage();\n\n page.setDefaultTimeout(timeout);\n page.setDefaultNavigationTimeout(timeout);\n\n // Give the page permission to show notifications. This is required for\n // testing `snap_notify`.\n await page.browserContext().overridePermissions(url, ['notifications']);\n\n // `networkidle0` is used to ensure that the page is fully loaded. This\n // makes it wait for no requests to be made, which guarantees that the page\n // is ready.\n await page.goto(url, { waitUntil: 'networkidle0' });\n\n const browserLog = createModuleLogger(rootLogger, 'browser');\n\n page\n // This is fired when the page calls `console.log` or similar.\n .on('console', (message) => {\n browserLog(`[${message.type()}] ${message.text()}`);\n })\n\n // This is fired when the page throws an error.\n .on('pageerror', ({ message }) => {\n browserLog(`[page error] ${message}`);\n });\n\n return page;\n }\n}\n\nexport default SnapsEnvironment;\n"],"names":["SnapsEnvironment","log","createModuleLogger","rootLogger","NodeEnvironment","setup","options","server","enabled","startServer","args","browser","headless","push","remote","logLevel","capabilities","browserName","global","snapsEnvironment","teardown","keepAlive","deleteSession","close","url","assert","port","address","simulatorUrl","executionEnvironmentUrl","encodeURIComponent","snapId","createPage","timeout","puppeteer","getPuppeteer","page","newPage","setDefaultTimeout","setDefaultNavigationTimeout","browserContext","overridePermissions","goto","waitUntil","browserLog","on","message","type","text","constructor","context","getOptions","projectConfig","testEnvironmentOptions"],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "installSnap", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return installSnap;
9
+ }
10
+ });
11
+ const _utils = require("@metamask/utils");
12
+ const _pptrtestinglibrary = require("pptr-testing-library");
13
+ const _internals = require("./internals");
14
+ // eslint-disable-next-line @typescript-eslint/unbound-method
15
+ const { getByTestId } = _pptrtestinglibrary.queries;
16
+ const log = (0, _utils.createModuleLogger)(_internals.rootLogger, 'helpers');
17
+ async function installSnap(snapId = (0, _internals.getEnvironment)().snapId) {
18
+ const environment = (0, _internals.getEnvironment)();
19
+ log('Installing snap %s.', snapId);
20
+ const page = await environment.createPage();
21
+ const document = await (0, _pptrtestinglibrary.getDocument)(page);
22
+ log('Setting snap ID to %s.', snapId);
23
+ await page.evaluate((payload)=>{
24
+ window.__SIMULATOR_API__.dispatch({
25
+ type: 'configuration/setSnapId',
26
+ payload
27
+ });
28
+ }, snapId);
29
+ log('Waiting for snap to install.');
30
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
31
+ await (0, _internals.waitFor)(async ()=>await getByTestId(document, 'status-ok'), {
32
+ timeout: 10000,
33
+ message: `Timed out waiting for snap to install. Make sure the snap ID ("${snapId}") is correct, and the server is running.`
34
+ });
35
+ return {
36
+ request: (options)=>{
37
+ log('Sending request %o.', options);
38
+ // Note: This function is intentionally not async, so that we can access
39
+ // the `getInterface` method on the response.
40
+ return (0, _internals.request)(page, options);
41
+ },
42
+ sendTransaction: async (options = {})=>{
43
+ log('Sending transaction %o.', options);
44
+ return await (0, _internals.sendTransaction)(page, options);
45
+ },
46
+ runCronjob: (options)=>{
47
+ log('Running cronjob %o.', options);
48
+ // Note: This function is intentionally not async, so that we can access
49
+ // the `getInterface` method on the response.
50
+ return (0, _internals.runCronjob)(page, options);
51
+ },
52
+ close: async ()=>{
53
+ log('Closing page.');
54
+ await page.close();
55
+ },
56
+ mock: async (options)=>{
57
+ log('Mocking %o.', options);
58
+ return await (0, _internals.mock)(page, options);
59
+ },
60
+ mockJsonRpc: async (options)=>{
61
+ log('Mocking JSON-RPC %o.', options);
62
+ return await (0, _internals.mockJsonRpc)(page, options);
63
+ }
64
+ };
65
+ }
66
+
67
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/helpers.ts"],"sourcesContent":["import { createModuleLogger } from '@metamask/utils';\nimport { getDocument, queries } from 'pptr-testing-library';\n\nimport {\n getEnvironment,\n mock,\n waitFor,\n request,\n sendTransaction,\n runCronjob,\n mockJsonRpc,\n rootLogger,\n} from './internals';\nimport type { Snap, SnapResponse } from './types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst { getByTestId } = queries;\n\nconst log = createModuleLogger(rootLogger, 'helpers');\n\n/**\n * Load a snap into the environment. This is the main entry point for testing\n * snaps: It returns a {@link Snap} object that can be used to interact with the\n * snap.\n *\n * @example\n * ```ts\n * import { installSnap } from '@metamask/snaps-jest';\n *\n * describe('My Snap', () => {\n * it('should do something', async () => {\n * const { request } = await installSnap('local:my-snap');\n * const response = await request({\n * method: 'foo',\n * params: ['bar'],\n * });\n * expect(response).toRespondWith('bar');\n * });\n * });\n * ```\n * @param snapId - The ID of the snap, including the prefix (`local:`). Defaults\n * to the URL of the built-in server, if it is running. This supports both\n * local snap IDs and NPM snap IDs.\n * @returns The snap.\n * @throws If the built-in server is not running, and no snap ID is provided.\n */\nexport async function installSnap(\n snapId: string = getEnvironment().snapId,\n): Promise<Snap> {\n const environment = getEnvironment();\n\n log('Installing snap %s.', snapId);\n\n const page = await environment.createPage();\n const document = await getDocument(page);\n\n log('Setting snap ID to %s.', snapId);\n await page.evaluate((payload) => {\n window.__SIMULATOR_API__.dispatch({\n type: 'configuration/setSnapId',\n payload,\n });\n }, snapId);\n\n log('Waiting for snap to install.');\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n await waitFor(async () => await getByTestId(document, 'status-ok'), {\n timeout: 10000,\n message: `Timed out waiting for snap to install. Make sure the snap ID (\"${snapId}\") is correct, and the server is running.`,\n });\n\n return {\n request: (options) => {\n log('Sending request %o.', options);\n\n // Note: This function is intentionally not async, so that we can access\n // the `getInterface` method on the response.\n return request(page, options);\n },\n\n sendTransaction: async (options = {}): Promise<SnapResponse> => {\n log('Sending transaction %o.', options);\n\n return await sendTransaction(page, options);\n },\n\n runCronjob: (options) => {\n log('Running cronjob %o.', options);\n\n // Note: This function is intentionally not async, so that we can access\n // the `getInterface` method on the response.\n return runCronjob(page, options);\n },\n\n close: async () => {\n log('Closing page.');\n\n await page.close();\n },\n\n mock: async (options) => {\n log('Mocking %o.', options);\n\n return await mock(page, options);\n },\n\n mockJsonRpc: async (options) => {\n log('Mocking JSON-RPC %o.', options);\n\n return await mockJsonRpc(page, options);\n },\n };\n}\n"],"names":["installSnap","getByTestId","queries","log","createModuleLogger","rootLogger","snapId","getEnvironment","environment","page","createPage","document","getDocument","evaluate","payload","window","__SIMULATOR_API__","dispatch","type","waitFor","timeout","message","request","options","sendTransaction","runCronjob","close","mock","mockJsonRpc"],"mappings":";;;;+BA8CsBA;;;eAAAA;;;uBA9Ca;oCACE;2BAW9B;AAGP,6DAA6D;AAC7D,MAAM,EAAEC,WAAW,EAAE,GAAGC,2BAAO;AAE/B,MAAMC,MAAMC,IAAAA,yBAAkB,EAACC,qBAAU,EAAE;AA4BpC,eAAeL,YACpBM,SAAiBC,IAAAA,yBAAc,IAAGD,MAAM;IAExC,MAAME,cAAcD,IAAAA,yBAAc;IAElCJ,IAAI,uBAAuBG;IAE3B,MAAMG,OAAO,MAAMD,YAAYE,UAAU;IACzC,MAAMC,WAAW,MAAMC,IAAAA,+BAAW,EAACH;IAEnCN,IAAI,0BAA0BG;IAC9B,MAAMG,KAAKI,QAAQ,CAAC,CAACC;QACnBC,OAAOC,iBAAiB,CAACC,QAAQ,CAAC;YAChCC,MAAM;YACNJ;QACF;IACF,GAAGR;IAEHH,IAAI;IACJ,kEAAkE;IAClE,MAAMgB,IAAAA,kBAAO,EAAC,UAAY,MAAMlB,YAAYU,UAAU,cAAc;QAClES,SAAS;QACTC,SAAS,CAAC,+DAA+D,EAAEf,OAAO,yCAAyC,CAAC;IAC9H;IAEA,OAAO;QACLgB,SAAS,CAACC;YACRpB,IAAI,uBAAuBoB;YAE3B,wEAAwE;YACxE,6CAA6C;YAC7C,OAAOD,IAAAA,kBAAO,EAACb,MAAMc;QACvB;QAEAC,iBAAiB,OAAOD,UAAU,CAAC,CAAC;YAClCpB,IAAI,2BAA2BoB;YAE/B,OAAO,MAAMC,IAAAA,0BAAe,EAACf,MAAMc;QACrC;QAEAE,YAAY,CAACF;YACXpB,IAAI,uBAAuBoB;YAE3B,wEAAwE;YACxE,6CAA6C;YAC7C,OAAOE,IAAAA,qBAAU,EAAChB,MAAMc;QAC1B;QAEAG,OAAO;YACLvB,IAAI;YAEJ,MAAMM,KAAKiB,KAAK;QAClB;QAEAC,MAAM,OAAOJ;YACXpB,IAAI,eAAeoB;YAEnB,OAAO,MAAMI,IAAAA,eAAI,EAAClB,MAAMc;QAC1B;QAEAK,aAAa,OAAOL;YAClBpB,IAAI,wBAAwBoB;YAE5B,OAAO,MAAMK,IAAAA,sBAAW,EAACnB,MAAMc;QACjC;IACF;AACF"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ default: function() {
13
+ return _environment.default;
14
+ },
15
+ TestEnvironment: function() {
16
+ return _environment.default;
17
+ }
18
+ });
19
+ const _environment = /*#__PURE__*/ _interop_require_default(require("./environment"));
20
+ _export_star(require("./helpers"), exports);
21
+ _export_star(require("./options"), exports);
22
+ _export_star(require("./types"), exports);
23
+ function _export_star(from, to) {
24
+ Object.keys(from).forEach(function(k) {
25
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
26
+ Object.defineProperty(to, k, {
27
+ enumerable: true,
28
+ get: function() {
29
+ return from[k];
30
+ }
31
+ });
32
+ }
33
+ });
34
+ return from;
35
+ }
36
+ function _interop_require_default(obj) {
37
+ return obj && obj.__esModule ? obj : {
38
+ default: obj
39
+ };
40
+ }
41
+
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export { default, default as TestEnvironment } from './environment';\nexport * from './helpers';\nexport * from './options';\nexport * from './types';\n"],"names":["default","TestEnvironment"],"mappings":";;;;;;;;;;;IAASA,OAAO;eAAPA,oBAAO;;IAAaC,eAAe;eAAfA,oBAAe;;;oEAAQ;qBACtC;qBACA;qBACA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "getEnvironment", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return getEnvironment;
9
+ }
10
+ });
11
+ const _utils = require("@metamask/utils");
12
+ function getEnvironment() {
13
+ // `snapsEnvironment` is a global variable that is set by the Jest
14
+ // environment.
15
+ (0, _utils.assert)(snapsEnvironment, 'Snaps environment not found. Make sure you have configured the environment correctly.');
16
+ return snapsEnvironment;
17
+ }
18
+
19
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/internals/environment.ts"],"sourcesContent":["import { assert } from '@metamask/utils';\n\n/**\n * Get the Snaps environment. This asserts that the environment has been\n * configured.\n *\n * @returns The Snaps environment.\n */\nexport function getEnvironment() {\n // `snapsEnvironment` is a global variable that is set by the Jest\n // environment.\n assert(\n snapsEnvironment,\n 'Snaps environment not found. Make sure you have configured the environment correctly.',\n );\n\n return snapsEnvironment;\n}\n"],"names":["getEnvironment","assert","snapsEnvironment"],"mappings":";;;;+BAQgBA;;;eAAAA;;;uBARO;AAQhB,SAASA;IACd,kEAAkE;IAClE,eAAe;IACfC,IAAAA,aAAM,EACJC,kBACA;IAGF,OAAOA;AACT"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./environment"), exports);
6
+ _export_star(require("./interface"), exports);
7
+ _export_star(require("./logger"), exports);
8
+ _export_star(require("./network"), exports);
9
+ _export_star(require("./request"), exports);
10
+ _export_star(require("./server"), exports);
11
+ _export_star(require("./structs"), exports);
12
+ _export_star(require("./types"), exports);
13
+ _export_star(require("./wait-for"), exports);
14
+ function _export_star(from, to) {
15
+ Object.keys(from).forEach(function(k) {
16
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
17
+ Object.defineProperty(to, k, {
18
+ enumerable: true,
19
+ get: function() {
20
+ return from[k];
21
+ }
22
+ });
23
+ }
24
+ });
25
+ return from;
26
+ }
27
+
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/internals/index.ts"],"sourcesContent":["export * from './environment';\nexport * from './interface';\nexport * from './logger';\nexport * from './network';\nexport * from './request';\nexport * from './server';\nexport * from './structs';\n// eslint-disable-next-line import/export\nexport * from './types';\nexport * from './wait-for';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBAEA;qBACA"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ getInterface: function() {
13
+ return getInterface;
14
+ },
15
+ getNotifications: function() {
16
+ return getNotifications;
17
+ }
18
+ });
19
+ const _rpcmethods = require("@metamask/rpc-methods");
20
+ const _utils = require("@metamask/utils");
21
+ const _superstruct = require("superstruct");
22
+ const _structs = require("./structs");
23
+ const _waitfor = require("./wait-for");
24
+ async function getInterface(page, options = {}) {
25
+ const { timeout } = (0, _superstruct.create)(options, _structs.SnapOptionsStruct);
26
+ const { type, node: content } = await (0, _waitfor.waitFor)(async ()=>{
27
+ const ui = await page.evaluate(()=>{
28
+ const state = window.__SIMULATOR_API__.getState();
29
+ return state.simulation.ui;
30
+ });
31
+ (0, _utils.assert)(ui);
32
+ return ui;
33
+ }, {
34
+ timeout,
35
+ message: 'Timed out waiting for snap interface to be shown.'
36
+ });
37
+ switch(type){
38
+ case _rpcmethods.DialogType.Alert:
39
+ return {
40
+ type: 'alert',
41
+ content,
42
+ ok: async ()=>{
43
+ await page.evaluate(()=>{
44
+ window.__SIMULATOR_API__.dispatch({
45
+ type: 'simulation/resolveUserInterface',
46
+ payload: null
47
+ });
48
+ });
49
+ }
50
+ };
51
+ case _rpcmethods.DialogType.Confirmation:
52
+ return {
53
+ type: 'confirmation',
54
+ content,
55
+ ok: async ()=>{
56
+ await page.evaluate(()=>{
57
+ window.__SIMULATOR_API__.dispatch({
58
+ type: 'simulation/resolveUserInterface',
59
+ payload: true
60
+ });
61
+ });
62
+ },
63
+ cancel: async ()=>{
64
+ await page.evaluate(()=>{
65
+ window.__SIMULATOR_API__.dispatch({
66
+ type: 'simulation/resolveUserInterface',
67
+ payload: false
68
+ });
69
+ });
70
+ }
71
+ };
72
+ case _rpcmethods.DialogType.Prompt:
73
+ return {
74
+ type: 'prompt',
75
+ content,
76
+ ok: async (value)=>{
77
+ await page.evaluate((payload)=>{
78
+ window.__SIMULATOR_API__.dispatch({
79
+ type: 'simulation/resolveUserInterface',
80
+ payload
81
+ });
82
+ }, value);
83
+ },
84
+ cancel: async ()=>{
85
+ await page.evaluate(()=>{
86
+ window.__SIMULATOR_API__.dispatch({
87
+ type: 'simulation/resolveUserInterface',
88
+ payload: null
89
+ });
90
+ });
91
+ }
92
+ };
93
+ default:
94
+ throw new Error(`Unknown or unsupported dialog type: ${String(type)}.`);
95
+ }
96
+ }
97
+ async function getNotifications(page, requestId) {
98
+ return await page.evaluate((id)=>{
99
+ return window.__SIMULATOR_API__.getNotifications(id);
100
+ }, requestId);
101
+ }
102
+
103
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/internals/interface.ts"],"sourcesContent":["import { DialogType } from '@metamask/rpc-methods';\nimport { assert } from '@metamask/utils';\nimport { Page } from 'puppeteer';\nimport { create } from 'superstruct';\n\nimport { SnapInterface, SnapOptions } from '../types';\nimport { SnapOptionsStruct } from './structs';\nimport { waitFor } from './wait-for';\n\n/**\n * Get the current snap user interface (i.e., dialog). This will throw an error\n * if the snap does not show a user interface within the timeout.\n *\n * @param page - The page to get the interface from.\n * @param options - The options to use.\n * @param options.timeout - The timeout in milliseconds to use. Defaults to\n * `1000`.\n * @returns The user interface object.\n */\nexport async function getInterface(\n page: Page,\n options: SnapOptions = {},\n): Promise<SnapInterface> {\n const { timeout } = create(options, SnapOptionsStruct);\n\n const { type, node: content } = await waitFor(\n async () => {\n const ui = await page.evaluate(() => {\n const state = window.__SIMULATOR_API__.getState();\n return state.simulation.ui;\n });\n\n assert(ui);\n return ui;\n },\n {\n timeout,\n message: 'Timed out waiting for snap interface to be shown.',\n },\n );\n\n switch (type) {\n case DialogType.Alert:\n return {\n type: 'alert',\n content,\n\n ok: async () => {\n await page.evaluate(() => {\n window.__SIMULATOR_API__.dispatch({\n type: 'simulation/resolveUserInterface',\n payload: null,\n });\n });\n },\n };\n\n case DialogType.Confirmation:\n return {\n type: 'confirmation',\n content,\n\n ok: async () => {\n await page.evaluate(() => {\n window.__SIMULATOR_API__.dispatch({\n type: 'simulation/resolveUserInterface',\n payload: true,\n });\n });\n },\n\n cancel: async () => {\n await page.evaluate(() => {\n window.__SIMULATOR_API__.dispatch({\n type: 'simulation/resolveUserInterface',\n payload: false,\n });\n });\n },\n };\n\n case DialogType.Prompt:\n return {\n type: 'prompt',\n content,\n\n ok: async (value) => {\n await page.evaluate((payload) => {\n window.__SIMULATOR_API__.dispatch({\n type: 'simulation/resolveUserInterface',\n payload,\n });\n }, value);\n },\n\n cancel: async () => {\n await page.evaluate(() => {\n window.__SIMULATOR_API__.dispatch({\n type: 'simulation/resolveUserInterface',\n payload: null,\n });\n });\n },\n };\n\n default:\n throw new Error(`Unknown or unsupported dialog type: ${String(type)}.`);\n }\n}\n\n/**\n * Get the text of the notifications.\n *\n * @param page - The page to get the notifications from.\n * @param requestId - The ID of the request to get the notifications for.\n * @returns The text of the notifications, in order of appearance.\n */\nexport async function getNotifications(page: Page, requestId: string) {\n return await page.evaluate((id) => {\n return window.__SIMULATOR_API__.getNotifications(id);\n }, requestId);\n}\n"],"names":["getInterface","getNotifications","page","options","timeout","create","SnapOptionsStruct","type","node","content","waitFor","ui","evaluate","state","window","__SIMULATOR_API__","getState","simulation","assert","message","DialogType","Alert","ok","dispatch","payload","Confirmation","cancel","Prompt","value","Error","String","requestId","id"],"mappings":";;;;;;;;;;;IAmBsBA,YAAY;eAAZA;;IAkGAC,gBAAgB;eAAhBA;;;4BArHK;uBACJ;6BAEA;yBAGW;yBACV;AAYjB,eAAeD,aACpBE,IAAU,EACVC,UAAuB,CAAC,CAAC;IAEzB,MAAM,EAAEC,OAAO,EAAE,GAAGC,IAAAA,mBAAM,EAACF,SAASG,0BAAiB;IAErD,MAAM,EAAEC,IAAI,EAAEC,MAAMC,OAAO,EAAE,GAAG,MAAMC,IAAAA,gBAAO,EAC3C;QACE,MAAMC,KAAK,MAAMT,KAAKU,QAAQ,CAAC;YAC7B,MAAMC,QAAQC,OAAOC,iBAAiB,CAACC,QAAQ;YAC/C,OAAOH,MAAMI,UAAU,CAACN,EAAE;QAC5B;QAEAO,IAAAA,aAAM,EAACP;QACP,OAAOA;IACT,GACA;QACEP;QACAe,SAAS;IACX;IAGF,OAAQZ;QACN,KAAKa,sBAAU,CAACC,KAAK;YACnB,OAAO;gBACLd,MAAM;gBACNE;gBAEAa,IAAI;oBACF,MAAMpB,KAAKU,QAAQ,CAAC;wBAClBE,OAAOC,iBAAiB,CAACQ,QAAQ,CAAC;4BAChChB,MAAM;4BACNiB,SAAS;wBACX;oBACF;gBACF;YACF;QAEF,KAAKJ,sBAAU,CAACK,YAAY;YAC1B,OAAO;gBACLlB,MAAM;gBACNE;gBAEAa,IAAI;oBACF,MAAMpB,KAAKU,QAAQ,CAAC;wBAClBE,OAAOC,iBAAiB,CAACQ,QAAQ,CAAC;4BAChChB,MAAM;4BACNiB,SAAS;wBACX;oBACF;gBACF;gBAEAE,QAAQ;oBACN,MAAMxB,KAAKU,QAAQ,CAAC;wBAClBE,OAAOC,iBAAiB,CAACQ,QAAQ,CAAC;4BAChChB,MAAM;4BACNiB,SAAS;wBACX;oBACF;gBACF;YACF;QAEF,KAAKJ,sBAAU,CAACO,MAAM;YACpB,OAAO;gBACLpB,MAAM;gBACNE;gBAEAa,IAAI,OAAOM;oBACT,MAAM1B,KAAKU,QAAQ,CAAC,CAACY;wBACnBV,OAAOC,iBAAiB,CAACQ,QAAQ,CAAC;4BAChChB,MAAM;4BACNiB;wBACF;oBACF,GAAGI;gBACL;gBAEAF,QAAQ;oBACN,MAAMxB,KAAKU,QAAQ,CAAC;wBAClBE,OAAOC,iBAAiB,CAACQ,QAAQ,CAAC;4BAChChB,MAAM;4BACNiB,SAAS;wBACX;oBACF;gBACF;YACF;QAEF;YACE,MAAM,IAAIK,MAAM,CAAC,oCAAoC,EAAEC,OAAOvB,MAAM,CAAC,CAAC;IAC1E;AACF;AASO,eAAeN,iBAAiBC,IAAU,EAAE6B,SAAiB;IAClE,OAAO,MAAM7B,KAAKU,QAAQ,CAAC,CAACoB;QAC1B,OAAOlB,OAAOC,iBAAiB,CAACd,gBAAgB,CAAC+B;IACnD,GAAGD;AACL"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "rootLogger", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return rootLogger;
9
+ }
10
+ });
11
+ const _utils = require("@metamask/utils");
12
+ const rootLogger = (0, _utils.createProjectLogger)('snaps-jest');
13
+
14
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/internals/logger.ts"],"sourcesContent":["import { createProjectLogger } from '@metamask/utils';\n\nexport const rootLogger = createProjectLogger('snaps-jest');\n"],"names":["rootLogger","createProjectLogger"],"mappings":";;;;+BAEaA;;;eAAAA;;;uBAFuB;AAE7B,MAAMA,aAAaC,IAAAA,0BAAmB,EAAC"}