@twilio/flex-plugin-e2e-tests 5.0.0

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 (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/dist/core/index.d.ts +3 -0
  4. package/dist/core/index.js +16 -0
  5. package/dist/core/index.js.map +1 -0
  6. package/dist/core/parameters.d.ts +54 -0
  7. package/dist/core/parameters.js +95 -0
  8. package/dist/core/parameters.js.map +1 -0
  9. package/dist/core/runner.d.ts +8 -0
  10. package/dist/core/runner.js +313 -0
  11. package/dist/core/runner.js.map +1 -0
  12. package/dist/core/suites.d.ts +11 -0
  13. package/dist/core/suites.js +17 -0
  14. package/dist/core/suites.js.map +1 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.js +16 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/tests/step001.d.ts +3 -0
  19. package/dist/tests/step001.js +65 -0
  20. package/dist/tests/step001.js.map +1 -0
  21. package/dist/tests/step002.d.ts +3 -0
  22. package/dist/tests/step002.js +133 -0
  23. package/dist/tests/step002.js.map +1 -0
  24. package/dist/tests/step003.d.ts +3 -0
  25. package/dist/tests/step003.js +63 -0
  26. package/dist/tests/step003.js.map +1 -0
  27. package/dist/tests/step004.d.ts +3 -0
  28. package/dist/tests/step004.js +65 -0
  29. package/dist/tests/step004.js.map +1 -0
  30. package/dist/tests/step005.d.ts +3 -0
  31. package/dist/tests/step005.js +86 -0
  32. package/dist/tests/step005.js.map +1 -0
  33. package/dist/tests/step006.d.ts +3 -0
  34. package/dist/tests/step006.js +122 -0
  35. package/dist/tests/step006.js.map +1 -0
  36. package/dist/tests/step007.d.ts +3 -0
  37. package/dist/tests/step007.js +122 -0
  38. package/dist/tests/step007.js.map +1 -0
  39. package/dist/tests/step008.d.ts +3 -0
  40. package/dist/tests/step008.js +103 -0
  41. package/dist/tests/step008.js.map +1 -0
  42. package/dist/tests/step009.d.ts +3 -0
  43. package/dist/tests/step009.js +119 -0
  44. package/dist/tests/step009.js.map +1 -0
  45. package/dist/tests/step010.d.ts +3 -0
  46. package/dist/tests/step010.js +168 -0
  47. package/dist/tests/step010.js.map +1 -0
  48. package/dist/tests/step011.d.ts +3 -0
  49. package/dist/tests/step011.js +164 -0
  50. package/dist/tests/step011.js.map +1 -0
  51. package/dist/tests/step012.d.ts +3 -0
  52. package/dist/tests/step012.js +177 -0
  53. package/dist/tests/step012.js.map +1 -0
  54. package/dist/utils/assertion.d.ts +39 -0
  55. package/dist/utils/assertion.js +151 -0
  56. package/dist/utils/assertion.js.map +1 -0
  57. package/dist/utils/browser.d.ts +20 -0
  58. package/dist/utils/browser.js +142 -0
  59. package/dist/utils/browser.js.map +1 -0
  60. package/dist/utils/console-api.d.ts +43 -0
  61. package/dist/utils/console-api.js +154 -0
  62. package/dist/utils/console-api.js.map +1 -0
  63. package/dist/utils/index.d.ts +9 -0
  64. package/dist/utils/index.js +35 -0
  65. package/dist/utils/index.js.map +1 -0
  66. package/dist/utils/pages/app.d.ts +37 -0
  67. package/dist/utils/pages/app.js +133 -0
  68. package/dist/utils/pages/app.js.map +1 -0
  69. package/dist/utils/pages/index.d.ts +1 -0
  70. package/dist/utils/pages/index.js +14 -0
  71. package/dist/utils/pages/index.js.map +1 -0
  72. package/dist/utils/pages/view/admin-dashboard.d.ts +17 -0
  73. package/dist/utils/pages/view/admin-dashboard.js +91 -0
  74. package/dist/utils/pages/view/admin-dashboard.js.map +1 -0
  75. package/dist/utils/pages/view/agent-desktop.d.ts +17 -0
  76. package/dist/utils/pages/view/agent-desktop.js +91 -0
  77. package/dist/utils/pages/view/agent-desktop.js.map +1 -0
  78. package/dist/utils/pages/view/base.d.ts +29 -0
  79. package/dist/utils/pages/view/base.js +124 -0
  80. package/dist/utils/pages/view/base.js.map +1 -0
  81. package/dist/utils/pages/view/plugins.d.ts +31 -0
  82. package/dist/utils/pages/view/plugins.js +112 -0
  83. package/dist/utils/pages/view/plugins.js.map +1 -0
  84. package/dist/utils/pages/view/twilio-console.d.ts +26 -0
  85. package/dist/utils/pages/view/twilio-console.js +143 -0
  86. package/dist/utils/pages/view/twilio-console.js.map +1 -0
  87. package/dist/utils/plugin-helper.d.ts +6 -0
  88. package/dist/utils/plugin-helper.js +131 -0
  89. package/dist/utils/plugin-helper.js.map +1 -0
  90. package/dist/utils/plugins-api.d.ts +11 -0
  91. package/dist/utils/plugins-api.js +195 -0
  92. package/dist/utils/plugins-api.js.map +1 -0
  93. package/dist/utils/serverless-api.d.ts +7 -0
  94. package/dist/utils/serverless-api.js +117 -0
  95. package/dist/utils/serverless-api.js.map +1 -0
  96. package/dist/utils/spawn.d.ts +26 -0
  97. package/dist/utils/spawn.js +169 -0
  98. package/dist/utils/spawn.js.map +1 -0
  99. package/dist/utils/timers.d.ts +5 -0
  100. package/dist/utils/timers.js +48 -0
  101. package/dist/utils/timers.js.map +1 -0
  102. package/package.json +57 -0
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __read = (this && this.__read) || function (o, n) {
39
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
40
+ if (!m) return o;
41
+ var i = m.call(o), r, ar = [], e;
42
+ try {
43
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
+ }
45
+ catch (error) { e = { error: error }; }
46
+ finally {
47
+ try {
48
+ if (r && !r.done && (m = i["return"])) m.call(i);
49
+ }
50
+ finally { if (e) throw e.error; }
51
+ }
52
+ return ar;
53
+ };
54
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
55
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
56
+ to[j] = from[i];
57
+ return to;
58
+ };
59
+ var __importDefault = (this && this.__importDefault) || function (mod) {
60
+ return (mod && mod.__esModule) ? mod : { "default": mod };
61
+ };
62
+ Object.defineProperty(exports, "__esModule", { value: true });
63
+ /* eslint-disable import/no-unused-modules */
64
+ var semver_1 = __importDefault(require("semver"));
65
+ var core_1 = require("../core");
66
+ var utils_1 = require("../utils");
67
+ // Starting multiple plugins using --include-remote works
68
+ var testSuite = function (_a) {
69
+ var scenario = _a.scenario, config = _a.config, secrets = _a.secrets, environment = _a.environment;
70
+ return __awaiter(void 0, void 0, void 0, function () {
71
+ var plugin1, plugin2, plugin3, resource, oldVersion, twilioCliResult, consoleApi, cookies, e_1;
72
+ return __generator(this, function (_b) {
73
+ switch (_b.label) {
74
+ case 0:
75
+ plugin1 = scenario.plugins[0];
76
+ plugin2 = scenario.plugins[1];
77
+ plugin3 = scenario.plugins[2];
78
+ utils_1.assertion.not.isNull(plugin1);
79
+ utils_1.assertion.not.isNull(plugin2);
80
+ utils_1.assertion.not.isNull(plugin3);
81
+ if (!plugin1.newlineValue) {
82
+ throw new Error('scenario.plugin.newlineValue does not have a valid value');
83
+ }
84
+ return [4 /*yield*/, utils_1.api.getLatestPluginVersion(plugin2.name)];
85
+ case 1:
86
+ resource = _b.sent();
87
+ oldVersion = (resource === null || resource === void 0 ? void 0 : resource.version) || '0.0.0';
88
+ plugin2.changelog = "e2e test " + Date.now();
89
+ plugin2.version = semver_1.default.inc(oldVersion, 'patch');
90
+ return [4 /*yield*/, utils_1.spawn('twilio', __spreadArray(['flex:plugins:deploy', '--changelog', "\"" + plugin2.changelog + "\"", '--patch', '-l', 'debug'], __read(config.regionFlag)), {
91
+ cwd: plugin2.dir,
92
+ })];
93
+ case 2:
94
+ _b.sent();
95
+ // Release plugin2
96
+ return [4 /*yield*/, utils_1.spawn('twilio', __spreadArray([
97
+ 'flex:plugins:release',
98
+ '--plugin',
99
+ plugin2.name + "@" + plugin2.version,
100
+ '-l',
101
+ 'debug'
102
+ ], __read(config.regionFlag)))];
103
+ case 3:
104
+ // Release plugin2
105
+ _b.sent();
106
+ return [4 /*yield*/, utils_1.spawn('twilio', ['flex:plugins:start --include-remote'], {
107
+ detached: true,
108
+ cwd: plugin3.dir,
109
+ })];
110
+ case 4:
111
+ twilioCliResult = _b.sent();
112
+ return [4 /*yield*/, utils_1.pluginHelper.waitForPluginToStart(plugin3.localhostUrl, core_1.testParams.config.start.timeout, core_1.testParams.config.start.pollInterval)];
113
+ case 5:
114
+ _b.sent();
115
+ consoleApi = new utils_1.ConsoleAPI(config.consoleBaseUrl, secrets.console);
116
+ return [4 /*yield*/, consoleApi.getCookies()];
117
+ case 6:
118
+ cookies = _b.sent();
119
+ return [4 /*yield*/, utils_1.Browser.create({ flex: plugin3.localhostUrl, twilioConsole: config.consoleBaseUrl })];
120
+ case 7:
121
+ _b.sent();
122
+ _b.label = 8;
123
+ case 8:
124
+ _b.trys.push([8, 14, 16, 19]);
125
+ // Plugin loads
126
+ return [4 /*yield*/, utils_1.Browser.app.twilioConsole.login(cookies, 'admin', secrets.api.accountSid, config.localhostPort)];
127
+ case 9:
128
+ // Plugin loads
129
+ _b.sent();
130
+ return [4 /*yield*/, utils_1.assertion.app.view.agentDesktop.isVisible()];
131
+ case 10:
132
+ _b.sent();
133
+ return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin1.newlineValue)];
134
+ case 11:
135
+ _b.sent();
136
+ return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin2.componentText)];
137
+ case 12:
138
+ _b.sent();
139
+ return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin3.componentText)];
140
+ case 13:
141
+ _b.sent();
142
+ return [3 /*break*/, 19];
143
+ case 14:
144
+ e_1 = _b.sent();
145
+ return [4 /*yield*/, utils_1.Browser.app.takeScreenshot(environment.cwd)];
146
+ case 15:
147
+ _b.sent();
148
+ throw e_1;
149
+ case 16: return [4 /*yield*/, utils_1.Browser.kill()];
150
+ case 17:
151
+ _b.sent();
152
+ return [4 /*yield*/, utils_1.killChildProcess(twilioCliResult.child, environment.operatingSystem)];
153
+ case 18:
154
+ _b.sent();
155
+ return [7 /*endfinally*/];
156
+ case 19: return [2 /*return*/];
157
+ }
158
+ });
159
+ });
160
+ };
161
+ testSuite.description =
162
+ 'Running {{twilio flex:plugins:start --include-remote}} with 1 local plugin and all remote plugins';
163
+ exports.default = testSuite;
164
+ //# sourceMappingURL=step011.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step011.js","sourceRoot":"","sources":["../../src/tests/step011.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { TestSuite } from '../core';
2
+ declare const testSuite: TestSuite;
3
+ export default testSuite;
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __read = (this && this.__read) || function (o, n) {
39
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
40
+ if (!m) return o;
41
+ var i = m.call(o), r, ar = [], e;
42
+ try {
43
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
+ }
45
+ catch (error) { e = { error: error }; }
46
+ finally {
47
+ try {
48
+ if (r && !r.done && (m = i["return"])) m.call(i);
49
+ }
50
+ finally { if (e) throw e.error; }
51
+ }
52
+ return ar;
53
+ };
54
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
55
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
56
+ to[j] = from[i];
57
+ return to;
58
+ };
59
+ var __importDefault = (this && this.__importDefault) || function (mod) {
60
+ return (mod && mod.__esModule) ? mod : { "default": mod };
61
+ };
62
+ Object.defineProperty(exports, "__esModule", { value: true });
63
+ /* eslint-disable import/no-unused-modules */
64
+ var replace_in_file_1 = require("replace-in-file");
65
+ var semver_1 = __importDefault(require("semver"));
66
+ var core_1 = require("../core");
67
+ var utils_1 = require("../utils");
68
+ var testSuite = function (_a) {
69
+ var scenario = _a.scenario, config = _a.config, secrets = _a.secrets, environment = _a.environment;
70
+ return __awaiter(void 0, void 0, void 0, function () {
71
+ var ext, tmpComponentText, startPlugin, plugin1, plugin2, plugin3, resource, oldVersion, flags, twilioCliResult, consoleApi, cookies, e_1;
72
+ return __generator(this, function (_b) {
73
+ switch (_b.label) {
74
+ case 0:
75
+ ext = scenario.isTS ? 'tsx' : 'jsx';
76
+ tmpComponentText = 'This is the new text for the next version!';
77
+ startPlugin = function (url) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
78
+ return [2 /*return*/, utils_1.pluginHelper.waitForPluginToStart(url, core_1.testParams.config.start.timeout, core_1.testParams.config.start.pollInterval)];
79
+ }); }); };
80
+ plugin1 = scenario.plugins[0];
81
+ plugin2 = scenario.plugins[1];
82
+ plugin3 = scenario.plugins[2];
83
+ utils_1.assertion.not.isNull(plugin1);
84
+ utils_1.assertion.not.isNull(plugin2);
85
+ utils_1.assertion.not.isNull(plugin3);
86
+ utils_1.assertion.not.isNull(plugin1.newlineValue, 'scenario.plugins[0].newlineValue does not have a valid value');
87
+ // Edit remote plugin to have different text
88
+ return [4 /*yield*/, replace_in_file_1.replaceInFile({
89
+ files: utils_1.joinPath(plugin1.dir, 'src', 'components', 'CustomTaskList', "CustomTaskList." + ext),
90
+ from: plugin1.componentText,
91
+ to: tmpComponentText,
92
+ })];
93
+ case 1:
94
+ // Edit remote plugin to have different text
95
+ _b.sent();
96
+ return [4 /*yield*/, utils_1.api.getLatestPluginVersion(plugin1.name)];
97
+ case 2:
98
+ resource = _b.sent();
99
+ oldVersion = (resource === null || resource === void 0 ? void 0 : resource.version) || '0.0.0';
100
+ plugin1.version = semver_1.default.inc(oldVersion, 'patch');
101
+ return [4 /*yield*/, utils_1.spawn('twilio', __spreadArray(['flex:plugins:deploy', '--changelog', "\"" + plugin1.changelog + "\"", '--patch', '-l', 'debug'], __read(config.regionFlag)), {
102
+ cwd: plugin1.dir,
103
+ })];
104
+ case 3:
105
+ _b.sent();
106
+ // Release the edited plugin
107
+ return [4 /*yield*/, utils_1.spawn('twilio', __spreadArray([
108
+ 'flex:plugins:release',
109
+ '--plugin',
110
+ '-l',
111
+ 'debug',
112
+ plugin1.name + "@" + plugin1.version
113
+ ], __read(config.regionFlag)))];
114
+ case 4:
115
+ // Release the edited plugin
116
+ _b.sent();
117
+ flags = ['--name', plugin1.name + "@" + oldVersion, '--name', plugin2.name];
118
+ return [4 /*yield*/, utils_1.spawn('twilio', __spreadArray(['flex:plugins:start', '-l', 'debug'], __read(flags)), {
119
+ detached: true,
120
+ cwd: plugin3.dir,
121
+ })];
122
+ case 5:
123
+ twilioCliResult = _b.sent();
124
+ return [4 /*yield*/, Promise.all([startPlugin(plugin2.localhostUrl), startPlugin(plugin3.localhostUrl)])];
125
+ case 6:
126
+ _b.sent();
127
+ consoleApi = new utils_1.ConsoleAPI(config.consoleBaseUrl, secrets.console);
128
+ return [4 /*yield*/, consoleApi.getCookies()];
129
+ case 7:
130
+ cookies = _b.sent();
131
+ return [4 /*yield*/, utils_1.Browser.create({ flex: plugin3.localhostUrl, twilioConsole: config.consoleBaseUrl })];
132
+ case 8:
133
+ _b.sent();
134
+ _b.label = 9;
135
+ case 9:
136
+ _b.trys.push([9, 15, 17, 20]);
137
+ // Plugin loads
138
+ return [4 /*yield*/, utils_1.Browser.app.twilioConsole.login(cookies, 'admin', secrets.api.accountSid, config.localhostPort)];
139
+ case 10:
140
+ // Plugin loads
141
+ _b.sent();
142
+ return [4 /*yield*/, utils_1.assertion.app.view.agentDesktop.isVisible()];
143
+ case 11:
144
+ _b.sent();
145
+ // @ts-ignore
146
+ return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin1.newlineValue)];
147
+ case 12:
148
+ // @ts-ignore
149
+ _b.sent();
150
+ return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin2.componentText)];
151
+ case 13:
152
+ _b.sent();
153
+ return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin3.componentText)];
154
+ case 14:
155
+ _b.sent();
156
+ return [3 /*break*/, 20];
157
+ case 15:
158
+ e_1 = _b.sent();
159
+ return [4 /*yield*/, utils_1.Browser.app.takeScreenshot(environment.cwd)];
160
+ case 16:
161
+ _b.sent();
162
+ throw e_1;
163
+ case 17: return [4 /*yield*/, utils_1.Browser.kill()];
164
+ case 18:
165
+ _b.sent();
166
+ return [4 /*yield*/, utils_1.killChildProcess(twilioCliResult.child, environment.operatingSystem)];
167
+ case 19:
168
+ _b.sent();
169
+ return [7 /*endfinally*/];
170
+ case 20: return [2 /*return*/];
171
+ }
172
+ });
173
+ });
174
+ };
175
+ testSuite.description = 'Running {{twilio flex:plugins:start}} with multiple plugins: 2 local and 1 versioned';
176
+ exports.default = testSuite;
177
+ //# sourceMappingURL=step012.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step012.js","sourceRoot":"","sources":["../../src/tests/step012.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { App } from './pages';
2
+ declare const _default: {
3
+ equal: (actual: any, expected: any, msg?: string | undefined) => void;
4
+ fileExists: (paths: string[], msg?: string | undefined) => void;
5
+ jsonFileContains: <T>(paths: string[], key: string, value: T, msg?: string | undefined) => void;
6
+ fileContains: (paths: string[], value: string, msg?: string | undefined) => void;
7
+ dirIsEmpty: (paths: string[], msg?: string | undefined) => void;
8
+ stringContains: (line: string, str: string, msg?: string | undefined) => void;
9
+ isNull: (obj: any, msg?: string | undefined) => void;
10
+ isUndefined: (obj: any, msg?: string | undefined) => void;
11
+ not: {
12
+ fileExists: (paths: string[], msg?: string | undefined) => void;
13
+ jsonFileContains: <T>(paths: string[], key: string, value: T, msg?: string | undefined) => void;
14
+ fileContains: (paths: string[], value: string, msg?: string | undefined) => void;
15
+ dirIsEmpty: (paths: string[], msg?: string | undefined) => void;
16
+ stringContains: (line: string, str: string, msg?: string | undefined) => void;
17
+ equal: (actual: any, expected: any, msg?: string | undefined) => void;
18
+ isNull: (obj: any, msg?: string | undefined) => void;
19
+ isUndefined: (obj: any, msg?: string | undefined) => void;
20
+ };
21
+ app: {
22
+ readonly view: {
23
+ agentDesktop: {
24
+ isVisible: () => Promise<import("puppeteer").ElementHandle<Element>>;
25
+ };
26
+ adminDashboard: {
27
+ isVisible: () => Promise<import("puppeteer").ElementHandle<Element>>;
28
+ };
29
+ twilioConsole: {};
30
+ plugins: {
31
+ plugin: {
32
+ isVisible: (pluginText: string) => Promise<import("puppeteer").ElementHandle<Element>>;
33
+ };
34
+ };
35
+ };
36
+ init: (value: App) => void;
37
+ };
38
+ };
39
+ export default _default;
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __read = (this && this.__read) || function (o, n) {
22
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
23
+ if (!m) return o;
24
+ var i = m.call(o), r, ar = [], e;
25
+ try {
26
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
27
+ }
28
+ catch (error) { e = { error: error }; }
29
+ finally {
30
+ try {
31
+ if (r && !r.done && (m = i["return"])) m.call(i);
32
+ }
33
+ finally { if (e) throw e.error; }
34
+ }
35
+ return ar;
36
+ };
37
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
38
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
39
+ to[j] = from[i];
40
+ return to;
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ /* eslint-disable @typescript-eslint/no-explicit-any */
44
+ var assert_1 = require("assert");
45
+ var path = __importStar(require("path"));
46
+ var fs = __importStar(require("fs"));
47
+ var lodash_1 = require("lodash");
48
+ var _strictEqual = function (doesEqual, actual, expected, msg) {
49
+ if (doesEqual) {
50
+ assert_1.deepStrictEqual(actual, expected, msg);
51
+ }
52
+ else {
53
+ assert_1.notDeepStrictEqual(actual, expected, msg);
54
+ }
55
+ };
56
+ var equal = function (doesEqual) {
57
+ return function (actual, expected, msg) {
58
+ _strictEqual(doesEqual, actual, expected, msg);
59
+ };
60
+ };
61
+ /**
62
+ * Checks whether a file/directory exists
63
+ */
64
+ var fileExists = function (doesEqual) {
65
+ return function (paths, msg) {
66
+ _strictEqual(doesEqual, true, fs.existsSync(path.join.apply(path, __spreadArray([], __read(paths)))), msg);
67
+ };
68
+ };
69
+ /**
70
+ * Checks whether the JSON file contains the given key:value pair
71
+ */
72
+ var jsonFileContains = function (doesEqual) {
73
+ return function (paths, key, value, msg) {
74
+ _strictEqual(doesEqual, value, lodash_1.get(JSON.parse(fs.readFileSync(path.join.apply(path, __spreadArray([], __read(paths))), 'utf-8')), key), msg);
75
+ };
76
+ };
77
+ var stringContains = function (doesEqual) { return function (line, str, msg) {
78
+ _strictEqual(doesEqual, true, line.includes(str), msg);
79
+ }; };
80
+ /**
81
+ * Checks whether the file contains the given string
82
+ */
83
+ var fileContains = function (doesEqual) { return function (paths, value, msg) {
84
+ var file = path.join.apply(path, __spreadArray([], __read(paths)));
85
+ var not = doesEqual ? ' not ' : ' ';
86
+ msg = msg || file + " does" + not + "contain " + value;
87
+ stringContains(doesEqual)(fs.readFileSync(file, 'utf-8'), value, msg);
88
+ }; };
89
+ /**
90
+ * Checks whether the directory is empty
91
+ */
92
+ var dirIsEmpty = function (doesEqual) { return function (paths, msg) {
93
+ _strictEqual(doesEqual, 0, fs.readdirSync(path.join.apply(path, __spreadArray([], __read(paths)))).length, msg);
94
+ }; };
95
+ /**
96
+ * Checks whether the object is null
97
+ */
98
+ var isNull = function (doesEqual) { return function (obj, msg) {
99
+ if (doesEqual) {
100
+ assert_1.deepEqual(obj, null, msg);
101
+ }
102
+ else {
103
+ assert_1.notDeepEqual(obj, null, msg);
104
+ }
105
+ }; };
106
+ /**
107
+ * Checks whether the object is underfined
108
+ */
109
+ var isUndefined = function (doesEqual) { return function (obj, msg) {
110
+ if (doesEqual) {
111
+ assert_1.deepEqual(obj, undefined, msg);
112
+ }
113
+ else {
114
+ assert_1.notDeepEqual(obj, undefined, msg);
115
+ }
116
+ }; };
117
+ exports.default = {
118
+ equal: equal(true),
119
+ fileExists: fileExists(true),
120
+ jsonFileContains: jsonFileContains(true),
121
+ fileContains: fileContains(true),
122
+ dirIsEmpty: dirIsEmpty(true),
123
+ stringContains: stringContains(true),
124
+ isNull: isNull(true),
125
+ isUndefined: isUndefined(true),
126
+ not: {
127
+ fileExists: fileExists(false),
128
+ jsonFileContains: jsonFileContains(false),
129
+ fileContains: fileContains(false),
130
+ dirIsEmpty: dirIsEmpty(false),
131
+ stringContains: stringContains(false),
132
+ equal: equal(false),
133
+ isNull: isNull(false),
134
+ isUndefined: isUndefined(false),
135
+ },
136
+ app: (function () {
137
+ var view;
138
+ return {
139
+ get view() {
140
+ if (view) {
141
+ return view;
142
+ }
143
+ throw new Error('You must call init before accessing app assert');
144
+ },
145
+ init: function (value) {
146
+ view = value.assert;
147
+ },
148
+ };
149
+ })(),
150
+ };
151
+ //# sourceMappingURL=assertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../src/utils/assertion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { App, BaseUrl } from './pages';
2
+ export declare class Browser {
3
+ static app: App;
4
+ private static _browser;
5
+ private static _page;
6
+ private static _domainsToInclude;
7
+ /**
8
+ * Initializes browser object
9
+ */
10
+ static create(baseUrls: BaseUrl): Promise<void>;
11
+ static kill(): Promise<void>;
12
+ /**
13
+ * Attach browser log listener
14
+ */
15
+ private static _attachNetworkInterceptor;
16
+ /**
17
+ * Attach network interceptor
18
+ */
19
+ private static _attachLogListener;
20
+ }