@twilio/flex-plugin-e2e-tests 6.4.2-alpha.202408160957 → 6.4.2

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.
@@ -52,8 +52,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
52
52
  };
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
54
  exports.TwilioConsole = void 0;
55
- var core_1 = require("../../../core");
56
55
  var base_1 = require("./base");
56
+ var core_1 = require("../../../core");
57
57
  var timers_1 = require("../../timers");
58
58
  var TwilioConsole = /** @class */ (function (_super) {
59
59
  __extends(TwilioConsole, _super);
@@ -67,7 +67,6 @@ var TwilioConsole = /** @class */ (function (_super) {
67
67
  }
68
68
  /**
69
69
  * Logs user in through service-login
70
- * @param cookies
71
70
  * @param flexBaseUrl
72
71
  * @param flexPath
73
72
  * @param accountSid
@@ -86,17 +85,14 @@ var TwilioConsole = /** @class */ (function (_super) {
86
85
  return [4 /*yield*/, this.goto({ baseUrl: this._baseUrl, path: path })];
87
86
  case 1:
88
87
  _a.sent();
89
- if (!firstLoad) return [3 /*break*/, 8];
90
- return [4 /*yield*/, this.elementVisible(TwilioConsole._loginForm, "Twilio Console's Login form")];
91
- case 2:
92
- _a.sent();
88
+ if (!firstLoad) return [3 /*break*/, 7];
93
89
  return [4 /*yield*/, this.page.evaluate(function () {
94
90
  var _a;
95
91
  return (_a = document.head.querySelector('meta[name="csrfToken"]')) === null || _a === void 0 ? void 0 : _a.getAttribute('content');
96
92
  })];
97
- case 3:
93
+ case 2:
98
94
  csrfToken = _a.sent();
99
- if (!csrfToken) return [3 /*break*/, 7];
95
+ if (!csrfToken) return [3 /*break*/, 6];
100
96
  loginURL = this._baseUrl + "/userauth/submitLoginPassword";
101
97
  return [4 /*yield*/, this.page.evaluate(
102
98
  // eslint-disable-next-line @typescript-eslint/promise-function-async
@@ -118,19 +114,19 @@ var TwilioConsole = /** @class */ (function (_super) {
118
114
  password: core_1.testParams.secrets.console.password,
119
115
  csrfToken: csrfToken,
120
116
  })];
121
- case 4:
117
+ case 3:
122
118
  _a.sent();
123
119
  // Log in Flex via service login
124
120
  return [4 /*yield*/, this.goto({ baseUrl: this._baseUrl, path: path })];
125
- case 5:
121
+ case 4:
126
122
  // Log in Flex via service login
127
123
  _a.sent();
128
124
  return [4 /*yield*/, timers_1.sleep(30000)];
129
- case 6:
125
+ case 5:
130
126
  _a.sent();
131
- return [3 /*break*/, 8];
132
- case 7: throw new Error('Unable to fetch CSRF token to login to Twilio Console');
133
- case 8: return [2 /*return*/];
127
+ return [3 /*break*/, 7];
128
+ case 6: throw new Error('Unable to fetch CSRF token to login to Twilio Console');
129
+ case 7: return [2 /*return*/];
134
130
  }
135
131
  });
136
132
  });
@@ -1 +1 @@
1
- {"version":3,"file":"twilio-console.js","sourceRoot":"","sources":["../../../../src/utils/pages/view/twilio-console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"twilio-console.js","sourceRoot":"","sources":["../../../../src/utils/pages/view/twilio-console.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+BAA8B;AAC9B,sCAA2C;AAC3C,uCAAqC;AAErC;IAAmC,iCAAI;IASrC,uBAAY,IAAU,EAAE,EAAgE;YAA9D,IAAI,UAAA,EAAE,aAAa,mBAAA;QAA7C,YACE,kBAAM,IAAI,CAAC,SAGZ;QAVD,YAAM,GAAG,EAAE,CAAC;QAQV,KAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;QAC9B,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;IAC3B,CAAC;IAQD;;;;;OAKG;IACG,6BAAK,GAAX,UAAY,QAAgB,EAAE,UAAkB,EAAE,aAAqB,EAAE,SAAyB;QAAzB,0BAAA,EAAA,gBAAyB;;;;;;wBAC1F,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;4BACzD,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,aAAa,CAAC;4BAClD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;wBAChB,IAAI,GAAG,gCAA8B,UAAU,gBAAW,QAAQ,iBAAY,WAAa,CAAC;wBAElG,qBAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAA,EAAE,CAAC,EAAA;;wBAAjD,SAAiD,CAAC;6BAE9C,SAAS,EAAT,wBAAS;wBACO,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;gCACzC,OAAO,MAAA,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,0CAAE,YAAY,CAAC,SAAS,CAAC,CAAC;4BACxF,CAAC,CAAC,EAAA;;wBAFI,SAAS,GAAG,SAEhB;6BAEE,SAAS,EAAT,wBAAS;wBACL,QAAQ,GAAM,IAAI,CAAC,QAAQ,kCAA+B,CAAC;wBACjE,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;4BACtB,qEAAqE;4BACrE,UAAC,IAA4B;gCAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;oCACrB,OAAO,EAAE;wCACP,eAAe,EAAE,IAAI,CAAC,SAAS;wCAC/B,cAAc,EAAE,kBAAkB;qCACnC;oCACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wCACnB,KAAK,EAAE,IAAI,CAAC,KAAK;wCACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qCACxB,CAAC;oCACF,MAAM,EAAE,MAAM;iCACf,CAAC,CAAC;4BACL,CAAC,EACD;gCACE,GAAG,EAAE,QAAQ;gCACb,KAAK,EAAE,iBAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;gCACvC,QAAQ,EAAE,iBAAU,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ;gCAC7C,SAAS,WAAA;6BACV,CACF,EAAA;;wBArBD,SAqBC,CAAC;wBAEF,gCAAgC;wBAChC,qBAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAA,EAAE,CAAC,EAAA;;wBADjD,gCAAgC;wBAChC,SAAiD,CAAC;wBAClD,qBAAM,cAAK,CAAC,KAAK,CAAC,EAAA;;wBAAlB,SAAkB,CAAC;;4BAEnB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;;;;;KAG9E;IAvEc,wBAAU,GAAG,QAAQ,CAAC;IAcrC;;;OAGG;IACY,iCAAmB,GAAG,UAAC,IAAY,IAAK,OAAA,sBAAoB,IAAI,mBAAc,IAAM,EAA5C,CAA4C,CAAC;IAsDtG,oBAAC;CAAA,AAzED,CAAmC,WAAI,GAyEtC;AAzEY,sCAAa"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twilio/flex-plugin-e2e-tests",
3
- "version": "6.4.2-alpha.202408160957",
3
+ "version": "6.4.2",
4
4
  "description": "Flex Plugin E2E Tests framework",
5
5
  "keywords": [
6
6
  "flex",
@@ -34,8 +34,8 @@
34
34
  "test": "exit 0"
35
35
  },
36
36
  "dependencies": {
37
- "@twilio/flex-dev-utils": "6.4.2-alpha.202408160957",
38
- "@twilio/flex-plugins-api-client": "6.4.2-alpha.202408160957",
37
+ "@twilio/flex-dev-utils": "6.4.2",
38
+ "@twilio/flex-plugins-api-client": "6.4.2",
39
39
  "axios": "^0.24.0",
40
40
  "lodash": "4.17.21",
41
41
  "package-json": "^7.0.0",
@@ -48,10 +48,10 @@
48
48
  "@types/semver": "^7.3.9"
49
49
  },
50
50
  "engines": {
51
- "node": "^16 || ^18 || ^20"
51
+ "node": "^14 || ^16 || ^18 || ^20"
52
52
  },
53
53
  "publishConfig": {
54
54
  "access": "public"
55
55
  },
56
- "gitHead": "c2151ee5410fd265c6f109ebd590106fdcca4a36"
56
+ "gitHead": "dd1d3bebdb5d28721416c58bf4b84eb58fd7eca5"
57
57
  }
@@ -1,3 +0,0 @@
1
- import { TestSuite } from '../core';
2
- declare const testSuite: TestSuite;
3
- export default testSuite;
@@ -1,175 +0,0 @@
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, 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
- _b.label = 7;
128
- case 7:
129
- _b.trys.push([7, 14, 16, 19]);
130
- // Load local plugin
131
- return [4 /*yield*/, utils_1.Browser.create({ flex: plugin3.localhostUrl, twilioConsole: config.consoleBaseUrl })];
132
- case 8:
133
- // Load local plugin
134
- _b.sent();
135
- return [4 /*yield*/, utils_1.Browser.app.twilioConsole.login('admin', secrets.api.accountSid, config.localhostPort)];
136
- case 9:
137
- _b.sent();
138
- // Check if local plugin loaded okay
139
- return [4 /*yield*/, utils_1.assertion.app.view.agentDesktop.isVisible()];
140
- case 10:
141
- // Check if local plugin loaded okay
142
- _b.sent();
143
- // @ts-ignore
144
- return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin1.newlineValue)];
145
- case 11:
146
- // @ts-ignore
147
- _b.sent();
148
- return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin2.componentText)];
149
- case 12:
150
- _b.sent();
151
- return [4 /*yield*/, utils_1.assertion.app.view.plugins.plugin.isVisible(plugin3.componentText)];
152
- case 13:
153
- _b.sent();
154
- return [3 /*break*/, 19];
155
- case 14:
156
- e_1 = _b.sent();
157
- return [4 /*yield*/, utils_1.Browser.app.takeScreenshot(environment.cwd)];
158
- case 15:
159
- _b.sent();
160
- throw e_1;
161
- case 16: return [4 /*yield*/, utils_1.Browser.kill()];
162
- case 17:
163
- _b.sent();
164
- return [4 /*yield*/, utils_1.killChildProcess(twilioCliResult.child, environment.operatingSystem)];
165
- case 18:
166
- _b.sent();
167
- return [7 /*endfinally*/];
168
- case 19: return [2 /*return*/];
169
- }
170
- });
171
- });
172
- };
173
- testSuite.description = 'Running {{twilio flex:plugins:start}} with multiple plugins: 2 local and 1 versioned';
174
- exports.default = testSuite;
175
- //# sourceMappingURL=step013.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"step013.js","sourceRoot":"","sources":["../../src/tests/step013.ts"],"names":[],"mappings":"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"}