@bigbinary/neeto-playwright-commons 2.1.5 → 2.2.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.
- package/README.md +1 -0
- package/index.cjs.js +217 -62
- package/index.cjs.js.map +1 -1
- package/index.d.ts +17 -7
- package/index.js +219 -66
- package/index.js.map +1 -1
- package/package.json +3 -2
- package/scripts/neeto-auth/playwright_email_capture.rb.template +59 -0
- package/scripts/neeto-auth/setup.sh +24 -0
package/index.js
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
1
|
import { spawn, execSync } from 'child_process';
|
|
2
2
|
import { keysToSnakeCase, hyphenate, isNotPresent, humanize, isPresent, dynamicArray, findBy, truncate, isNotEmpty, isNotEqualDeep, randomPick } from '@bigbinary/neeto-cist';
|
|
3
3
|
import { faker } from '@faker-js/faker';
|
|
4
|
-
import * as
|
|
5
|
-
import
|
|
6
|
-
import require$$0$
|
|
4
|
+
import * as fs$4 from 'fs';
|
|
5
|
+
import fs__default, { readFileSync, promises, existsSync, writeFileSync, unlinkSync } from 'fs';
|
|
6
|
+
import require$$0$4 from 'os';
|
|
7
7
|
import * as path$1 from 'path';
|
|
8
8
|
import path__default from 'path';
|
|
9
9
|
import test, { expect, test as test$1, chromium as chromium$1, defineConfig, devices } from '@playwright/test';
|
|
10
10
|
import { getI18nInstance, initI18n } from 'playwright-i18next-fixture';
|
|
11
|
-
import require$$0$
|
|
11
|
+
import require$$0$3 from 'util';
|
|
12
12
|
import { curry, isNotNil, not, isEmpty, pluck, mergeAll, isNil, mergeDeepLeft } from 'ramda';
|
|
13
13
|
import dayjs from 'dayjs';
|
|
14
|
-
import require$$0$
|
|
15
|
-
import require$$0$
|
|
16
|
-
import require$$0$
|
|
14
|
+
import require$$0$7 from 'stream';
|
|
15
|
+
import require$$0$6 from 'node:buffer';
|
|
16
|
+
import require$$0$5 from 'buffer';
|
|
17
17
|
import require$$1$2 from 'string_decoder';
|
|
18
18
|
import require$$1$3 from 'node:stream';
|
|
19
|
-
import require$$0$
|
|
19
|
+
import require$$0$8 from 'crypto';
|
|
20
20
|
import require$$1$4 from 'zlib';
|
|
21
|
-
import require$$0$
|
|
22
|
-
import require$$0$
|
|
21
|
+
import require$$0$9 from 'assert';
|
|
22
|
+
import require$$0$a from 'tty';
|
|
23
23
|
import stealth$1 from 'puppeteer-extra-plugin-stealth';
|
|
24
24
|
import require$$1$5 from 'events';
|
|
25
25
|
import customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
26
26
|
import timezone from 'dayjs/plugin/timezone';
|
|
27
27
|
import utc from 'dayjs/plugin/utc';
|
|
28
28
|
import https from 'https';
|
|
29
|
+
import * as http from 'http';
|
|
29
30
|
|
|
30
31
|
const BASE_URL = "/api/v1";
|
|
31
32
|
const NEETO_AUTH_BASE_URL = (subdomain = "app") => `https://${subdomain}.neetoauth.net`;
|
|
@@ -668,7 +669,7 @@ var hasRequiredUtil_inspect;
|
|
|
668
669
|
function requireUtil_inspect () {
|
|
669
670
|
if (hasRequiredUtil_inspect) return util_inspect;
|
|
670
671
|
hasRequiredUtil_inspect = 1;
|
|
671
|
-
util_inspect = require$$0$
|
|
672
|
+
util_inspect = require$$0$3.inspect;
|
|
672
673
|
return util_inspect;
|
|
673
674
|
}
|
|
674
675
|
|
|
@@ -5074,7 +5075,7 @@ const joinString = (string1, string2, string3 = "", separator = " ") => {
|
|
|
5074
5075
|
};
|
|
5075
5076
|
const readFileSyncIfExists = (path = STORAGE_STATE) => {
|
|
5076
5077
|
try {
|
|
5077
|
-
return JSON.parse(
|
|
5078
|
+
return JSON.parse(fs$4.readFileSync(path, "utf8"));
|
|
5078
5079
|
}
|
|
5079
5080
|
catch {
|
|
5080
5081
|
return {};
|
|
@@ -5083,7 +5084,7 @@ const readFileSyncIfExists = (path = STORAGE_STATE) => {
|
|
|
5083
5084
|
const getGlobalUserState = () => readFileSyncIfExists()?.user;
|
|
5084
5085
|
const writeDataToFile = data => {
|
|
5085
5086
|
try {
|
|
5086
|
-
|
|
5087
|
+
fs$4.writeFileSync(STORAGE_STATE, data, "utf8");
|
|
5087
5088
|
}
|
|
5088
5089
|
catch (error) {
|
|
5089
5090
|
console.log(error);
|
|
@@ -5096,7 +5097,7 @@ const updateCredentials = ({ key, value }) => {
|
|
|
5096
5097
|
return writeDataToFile(JSON.stringify(data));
|
|
5097
5098
|
};
|
|
5098
5099
|
const removeCredentialFile = () => {
|
|
5099
|
-
|
|
5100
|
+
fs$4.unlink(STORAGE_STATE, error => {
|
|
5100
5101
|
if (!error)
|
|
5101
5102
|
return;
|
|
5102
5103
|
console.log(error);
|
|
@@ -6246,7 +6247,7 @@ class CustomCommands {
|
|
|
6246
6247
|
await expect(locator).toBeChecked({ checked: shouldBeChecked });
|
|
6247
6248
|
}).toPass({ timeout: 15_000 });
|
|
6248
6249
|
moveCursorAtBottom = async () => {
|
|
6249
|
-
const isMacOS = require$$0$
|
|
6250
|
+
const isMacOS = require$$0$4.platform() === "darwin";
|
|
6250
6251
|
const rightArrowKey = isMacOS ? "Meta+ArrowRight" : "End";
|
|
6251
6252
|
const downArrowKey = isMacOS ? "Meta+ArrowDown" : "PageDown";
|
|
6252
6253
|
await this.page.keyboard.press(rightArrowKey);
|
|
@@ -8887,7 +8888,7 @@ function requireSafer () {
|
|
|
8887
8888
|
if (hasRequiredSafer) return safer_1;
|
|
8888
8889
|
hasRequiredSafer = 1;
|
|
8889
8890
|
|
|
8890
|
-
var buffer = require$$0$
|
|
8891
|
+
var buffer = require$$0$5;
|
|
8891
8892
|
var Buffer = buffer.Buffer;
|
|
8892
8893
|
|
|
8893
8894
|
var safer = {};
|
|
@@ -26582,7 +26583,7 @@ function requireCharset () {
|
|
|
26582
26583
|
if (hasRequiredCharset) return charset.exports;
|
|
26583
26584
|
hasRequiredCharset = 1;
|
|
26584
26585
|
|
|
26585
|
-
const { Buffer } = require$$0$
|
|
26586
|
+
const { Buffer } = require$$0$6;
|
|
26586
26587
|
const iconv = requireLib$b();
|
|
26587
26588
|
const encodingJapanese = requireSrc$2();
|
|
26588
26589
|
const charsets = requireCharsets();
|
|
@@ -26708,7 +26709,7 @@ function requireLibbase64 () {
|
|
|
26708
26709
|
if (hasRequiredLibbase64) return libbase64;
|
|
26709
26710
|
hasRequiredLibbase64 = 1;
|
|
26710
26711
|
|
|
26711
|
-
const { Buffer } = require$$0$
|
|
26712
|
+
const { Buffer } = require$$0$6;
|
|
26712
26713
|
const stream = require$$1$3;
|
|
26713
26714
|
const Transform = stream.Transform;
|
|
26714
26715
|
|
|
@@ -26969,7 +26970,7 @@ function requireLibqp () {
|
|
|
26969
26970
|
if (hasRequiredLibqp) return libqp;
|
|
26970
26971
|
hasRequiredLibqp = 1;
|
|
26971
26972
|
|
|
26972
|
-
const { Buffer } = require$$0$
|
|
26973
|
+
const { Buffer } = require$$0$6;
|
|
26973
26974
|
const stream = require$$1$3;
|
|
26974
26975
|
const Transform = stream.Transform;
|
|
26975
26976
|
|
|
@@ -29344,7 +29345,7 @@ function requireLibmime () {
|
|
|
29344
29345
|
if (hasRequiredLibmime) return libmime.exports;
|
|
29345
29346
|
hasRequiredLibmime = 1;
|
|
29346
29347
|
|
|
29347
|
-
const { Buffer } = require$$0$
|
|
29348
|
+
const { Buffer } = require$$0$6;
|
|
29348
29349
|
const libcharset = requireCharset();
|
|
29349
29350
|
const libbase64 = requireLibbase64();
|
|
29350
29351
|
const libqp = requireLibqp();
|
|
@@ -30525,7 +30526,7 @@ function requireMimeNode () {
|
|
|
30525
30526
|
const libmime = requireLibmime();
|
|
30526
30527
|
const libqp = requireLibqp();
|
|
30527
30528
|
const libbase64 = requireLibbase64();
|
|
30528
|
-
const PassThrough = require$$0$
|
|
30529
|
+
const PassThrough = require$$0$7.PassThrough;
|
|
30529
30530
|
const pathlib = path__default;
|
|
30530
30531
|
|
|
30531
30532
|
class MimeNode {
|
|
@@ -30794,7 +30795,7 @@ function requireMessageSplitter () {
|
|
|
30794
30795
|
if (hasRequiredMessageSplitter) return messageSplitter;
|
|
30795
30796
|
hasRequiredMessageSplitter = 1;
|
|
30796
30797
|
|
|
30797
|
-
const Transform = require$$0$
|
|
30798
|
+
const Transform = require$$0$7.Transform;
|
|
30798
30799
|
const MimeNode = requireMimeNode();
|
|
30799
30800
|
|
|
30800
30801
|
const MAX_HEAD_SIZE = 1 * 1024 * 1024;
|
|
@@ -31224,7 +31225,7 @@ function requireMessageJoiner () {
|
|
|
31224
31225
|
if (hasRequiredMessageJoiner) return messageJoiner;
|
|
31225
31226
|
hasRequiredMessageJoiner = 1;
|
|
31226
31227
|
|
|
31227
|
-
const Transform = require$$0$
|
|
31228
|
+
const Transform = require$$0$7.Transform;
|
|
31228
31229
|
|
|
31229
31230
|
class MessageJoiner extends Transform {
|
|
31230
31231
|
constructor() {
|
|
@@ -31264,7 +31265,7 @@ function requireFlowedDecoder () {
|
|
|
31264
31265
|
|
|
31265
31266
|
// Helper class to rewrite nodes with specific mime type
|
|
31266
31267
|
|
|
31267
|
-
const Transform = require$$0$
|
|
31268
|
+
const Transform = require$$0$7.Transform;
|
|
31268
31269
|
const libmime = requireLibmime();
|
|
31269
31270
|
|
|
31270
31271
|
/**
|
|
@@ -31327,7 +31328,7 @@ function requireNodeRewriter () {
|
|
|
31327
31328
|
|
|
31328
31329
|
// Helper class to rewrite nodes with specific mime type
|
|
31329
31330
|
|
|
31330
|
-
const Transform = require$$0$
|
|
31331
|
+
const Transform = require$$0$7.Transform;
|
|
31331
31332
|
const FlowedDecoder = requireFlowedDecoder();
|
|
31332
31333
|
|
|
31333
31334
|
/**
|
|
@@ -31529,7 +31530,7 @@ function requireNodeStreamer () {
|
|
|
31529
31530
|
|
|
31530
31531
|
// Helper class to rewrite nodes with specific mime type
|
|
31531
31532
|
|
|
31532
|
-
const Transform = require$$0$
|
|
31533
|
+
const Transform = require$$0$7.Transform;
|
|
31533
31534
|
const FlowedDecoder = requireFlowedDecoder();
|
|
31534
31535
|
|
|
31535
31536
|
/**
|
|
@@ -31656,7 +31657,7 @@ function requireChunkedPassthrough () {
|
|
|
31656
31657
|
if (hasRequiredChunkedPassthrough) return chunkedPassthrough;
|
|
31657
31658
|
hasRequiredChunkedPassthrough = 1;
|
|
31658
31659
|
|
|
31659
|
-
const { Transform } = require$$0$
|
|
31660
|
+
const { Transform } = require$$0$7;
|
|
31660
31661
|
|
|
31661
31662
|
class ChunkedPassthrough extends Transform {
|
|
31662
31663
|
constructor(options = {}) {
|
|
@@ -32582,8 +32583,8 @@ function requireStreamHash () {
|
|
|
32582
32583
|
if (hasRequiredStreamHash) return streamHash;
|
|
32583
32584
|
hasRequiredStreamHash = 1;
|
|
32584
32585
|
|
|
32585
|
-
const crypto = require$$0$
|
|
32586
|
-
const Transform = require$$0$
|
|
32586
|
+
const crypto = require$$0$8;
|
|
32587
|
+
const Transform = require$$0$7.Transform;
|
|
32587
32588
|
|
|
32588
32589
|
class StreamHash extends Transform {
|
|
32589
32590
|
constructor(attachment, algo) {
|
|
@@ -54966,7 +54967,7 @@ function requireMailParser () {
|
|
|
54966
54967
|
const mailsplit = requireMailsplit();
|
|
54967
54968
|
const libmime = requireLibmime();
|
|
54968
54969
|
const addressparser = requireAddressparser();
|
|
54969
|
-
const Transform = require$$0$
|
|
54970
|
+
const Transform = require$$0$7.Transform;
|
|
54970
54971
|
const Splitter = mailsplit.Splitter;
|
|
54971
54972
|
const ChunkedPassthrough = mailsplit.ChunkedPassthrough;
|
|
54972
54973
|
const punycode = require$$4$2;
|
|
@@ -60600,9 +60601,7 @@ class MailerUtils {
|
|
|
60600
60601
|
const { html: { codes }, } = await this.findMessage({ to: email, subject: subjectSubstring }, { timeout, receivedAfter, expectedEmailCount });
|
|
60601
60602
|
return codes?.[0];
|
|
60602
60603
|
};
|
|
60603
|
-
generateRandomEmail = (
|
|
60604
|
-
? generateRandomBypassEmail()
|
|
60605
|
-
: faker.internet.email({ provider: process.env.FASTMAIL_DOMAIN_NAME });
|
|
60604
|
+
generateRandomEmail = () => faker.internet.email({ provider: process.env.FASTMAIL_DOMAIN_NAME });
|
|
60606
60605
|
getEmailAttachment = async (attachmentName, messageSearchCriteria = {}, { timeout = 10_000, receivedAfter = dateTimeOneHourAgo(), expectedEmailCount = 1, } = {}, shouldThrowErrorOnTimeout = true) => {
|
|
60607
60606
|
if (IS_DEV_ENV) {
|
|
60608
60607
|
return this.railsEmailUtils.getEmailAttachment(attachmentName, messageSearchCriteria, { receivedAfter, expectedEmailCount, timeout: timeout / 3 }, shouldThrowErrorOnTimeout);
|
|
@@ -66986,7 +66985,7 @@ function requireGifutil () {
|
|
|
66986
66985
|
|
|
66987
66986
|
/** @namespace GifUtil */
|
|
66988
66987
|
|
|
66989
|
-
const fs =
|
|
66988
|
+
const fs = fs__default;
|
|
66990
66989
|
const ImageQ = requireImageQ();
|
|
66991
66990
|
|
|
66992
66991
|
const BitmapImage = requireBitmapimage();
|
|
@@ -69802,8 +69801,8 @@ function requireChunkstream () {
|
|
|
69802
69801
|
if (hasRequiredChunkstream) return chunkstream.exports;
|
|
69803
69802
|
hasRequiredChunkstream = 1;
|
|
69804
69803
|
|
|
69805
|
-
let util = require$$0$
|
|
69806
|
-
let Stream = require$$0$
|
|
69804
|
+
let util = require$$0$3;
|
|
69805
|
+
let Stream = require$$0$7;
|
|
69807
69806
|
|
|
69808
69807
|
let ChunkStream = (chunkstream.exports = function () {
|
|
69809
69808
|
Stream.call(this);
|
|
@@ -70314,7 +70313,7 @@ function requireFilterParseAsync () {
|
|
|
70314
70313
|
if (hasRequiredFilterParseAsync) return filterParseAsync.exports;
|
|
70315
70314
|
hasRequiredFilterParseAsync = 1;
|
|
70316
70315
|
|
|
70317
|
-
let util = require$$0$
|
|
70316
|
+
let util = require$$0$3;
|
|
70318
70317
|
let ChunkStream = requireChunkstream();
|
|
70319
70318
|
let Filter = requireFilterParse();
|
|
70320
70319
|
|
|
@@ -71110,7 +71109,7 @@ function requireParserAsync () {
|
|
|
71110
71109
|
if (hasRequiredParserAsync) return parserAsync.exports;
|
|
71111
71110
|
hasRequiredParserAsync = 1;
|
|
71112
71111
|
|
|
71113
|
-
let util = require$$0$
|
|
71112
|
+
let util = require$$0$3;
|
|
71114
71113
|
let zlib = require$$1$4;
|
|
71115
71114
|
let ChunkStream = requireChunkstream();
|
|
71116
71115
|
let FilterAsync = requireFilterParseAsync();
|
|
@@ -71771,8 +71770,8 @@ function requirePackerAsync () {
|
|
|
71771
71770
|
if (hasRequiredPackerAsync) return packerAsync.exports;
|
|
71772
71771
|
hasRequiredPackerAsync = 1;
|
|
71773
71772
|
|
|
71774
|
-
let util = require$$0$
|
|
71775
|
-
let Stream = require$$0$
|
|
71773
|
+
let util = require$$0$3;
|
|
71774
|
+
let Stream = require$$0$7;
|
|
71776
71775
|
let constants = requireConstants$4();
|
|
71777
71776
|
let Packer = requirePacker();
|
|
71778
71777
|
|
|
@@ -71833,11 +71832,11 @@ function requireSyncInflate () {
|
|
|
71833
71832
|
hasRequiredSyncInflate = 1;
|
|
71834
71833
|
(function (module, exports$1) {
|
|
71835
71834
|
|
|
71836
|
-
let assert = require$$0$
|
|
71835
|
+
let assert = require$$0$9.ok;
|
|
71837
71836
|
let zlib = require$$1$4;
|
|
71838
|
-
let util = require$$0$
|
|
71837
|
+
let util = require$$0$3;
|
|
71839
71838
|
|
|
71840
|
-
let kMaxLength = require$$0$
|
|
71839
|
+
let kMaxLength = require$$0$5.kMaxLength;
|
|
71841
71840
|
|
|
71842
71841
|
function Inflate(opts) {
|
|
71843
71842
|
if (!(this instanceof Inflate)) {
|
|
@@ -72293,8 +72292,8 @@ function requirePng () {
|
|
|
72293
72292
|
if (hasRequiredPng) return png$1;
|
|
72294
72293
|
hasRequiredPng = 1;
|
|
72295
72294
|
|
|
72296
|
-
let util = require$$0$
|
|
72297
|
-
let Stream = require$$0$
|
|
72295
|
+
let util = require$$0$3;
|
|
72296
|
+
let Stream = require$$0$7;
|
|
72298
72297
|
let Parser = requireParserAsync();
|
|
72299
72298
|
let Packer = requirePackerAsync();
|
|
72300
72299
|
let PNGSync = requirePngSync();
|
|
@@ -108021,7 +108020,7 @@ var hasRequiredSupportsColor;
|
|
|
108021
108020
|
function requireSupportsColor () {
|
|
108022
108021
|
if (hasRequiredSupportsColor) return supportsColor_1;
|
|
108023
108022
|
hasRequiredSupportsColor = 1;
|
|
108024
|
-
const os = require$$0$
|
|
108023
|
+
const os = require$$0$4;
|
|
108025
108024
|
const hasFlag = requireHasFlag();
|
|
108026
108025
|
|
|
108027
108026
|
const env = process.env;
|
|
@@ -108164,8 +108163,8 @@ function requireNode () {
|
|
|
108164
108163
|
if (hasRequiredNode) return node.exports;
|
|
108165
108164
|
hasRequiredNode = 1;
|
|
108166
108165
|
(function (module, exports$1) {
|
|
108167
|
-
const tty = require$$0$
|
|
108168
|
-
const util = require$$0$
|
|
108166
|
+
const tty = require$$0$a;
|
|
108167
|
+
const util = require$$0$3;
|
|
108169
108168
|
|
|
108170
108169
|
/**
|
|
108171
108170
|
* This is the Node.js implementation of `debug()`.
|
|
@@ -109491,7 +109490,7 @@ function requirePath () {
|
|
|
109491
109490
|
hasRequiredPath = 1;
|
|
109492
109491
|
Object.defineProperty(path, "__esModule", { value: true });
|
|
109493
109492
|
path.convertPosixPathToPattern = path.convertWindowsPathToPattern = path.convertPathToPattern = path.escapePosixPath = path.escapeWindowsPath = path.escape = path.removeLeadingDotSegment = path.makeAbsolute = path.unixify = void 0;
|
|
109494
|
-
const os = require$$0$
|
|
109493
|
+
const os = require$$0$4;
|
|
109495
109494
|
const path$1 = path__default;
|
|
109496
109495
|
const IS_WINDOWS_PLATFORM = os.platform() === 'win32';
|
|
109497
109496
|
const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\
|
|
@@ -109758,7 +109757,7 @@ function requireGlobParent () {
|
|
|
109758
109757
|
|
|
109759
109758
|
var isGlob = requireIsGlob();
|
|
109760
109759
|
var pathPosixDirname = path__default.posix.dirname;
|
|
109761
|
-
var isWin32 = require$$0$
|
|
109760
|
+
var isWin32 = require$$0$4.platform() === 'win32';
|
|
109762
109761
|
|
|
109763
109762
|
var slash = '/';
|
|
109764
109763
|
var backslash = /\\/g;
|
|
@@ -110307,7 +110306,7 @@ function requireFillRange () {
|
|
|
110307
110306
|
if (hasRequiredFillRange) return fillRange;
|
|
110308
110307
|
hasRequiredFillRange = 1;
|
|
110309
110308
|
|
|
110310
|
-
const util = require$$0$
|
|
110309
|
+
const util = require$$0$3;
|
|
110311
110310
|
const toRegexRange = requireToRegexRange();
|
|
110312
110311
|
|
|
110313
110312
|
const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
@@ -113448,7 +113447,7 @@ function requireMicromatch () {
|
|
|
113448
113447
|
if (hasRequiredMicromatch) return micromatch_1;
|
|
113449
113448
|
hasRequiredMicromatch = 1;
|
|
113450
113449
|
|
|
113451
|
-
const util = require$$0$
|
|
113450
|
+
const util = require$$0$3;
|
|
113452
113451
|
const braces = requireBraces();
|
|
113453
113452
|
const picomatch = requirePicomatch();
|
|
113454
113453
|
const utils = requireUtils$2();
|
|
@@ -114151,7 +114150,7 @@ function requireMerge2 () {
|
|
|
114151
114150
|
* Copyright (c) 2014-2020 Teambition
|
|
114152
114151
|
* Licensed under the MIT license.
|
|
114153
114152
|
*/
|
|
114154
|
-
const Stream = require$$0$
|
|
114153
|
+
const Stream = require$$0$7;
|
|
114155
114154
|
const PassThrough = Stream.PassThrough;
|
|
114156
114155
|
const slice = Array.prototype.slice;
|
|
114157
114156
|
|
|
@@ -114580,7 +114579,7 @@ function requireFs$2 () {
|
|
|
114580
114579
|
(function (exports$1) {
|
|
114581
114580
|
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
114582
114581
|
exports$1.createFileSystemAdapter = exports$1.FILE_SYSTEM_ADAPTER = void 0;
|
|
114583
|
-
const fs =
|
|
114582
|
+
const fs = fs__default;
|
|
114584
114583
|
exports$1.FILE_SYSTEM_ADAPTER = {
|
|
114585
114584
|
lstat: fs.lstat,
|
|
114586
114585
|
stat: fs.stat,
|
|
@@ -115010,7 +115009,7 @@ function requireFs () {
|
|
|
115010
115009
|
(function (exports$1) {
|
|
115011
115010
|
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
115012
115011
|
exports$1.createFileSystemAdapter = exports$1.FILE_SYSTEM_ADAPTER = void 0;
|
|
115013
|
-
const fs =
|
|
115012
|
+
const fs = fs__default;
|
|
115014
115013
|
exports$1.FILE_SYSTEM_ADAPTER = {
|
|
115015
115014
|
lstat: fs.lstat,
|
|
115016
115015
|
stat: fs.stat,
|
|
@@ -115643,7 +115642,7 @@ function requireStream$2 () {
|
|
|
115643
115642
|
if (hasRequiredStream$2) return stream$2;
|
|
115644
115643
|
hasRequiredStream$2 = 1;
|
|
115645
115644
|
Object.defineProperty(stream$2, "__esModule", { value: true });
|
|
115646
|
-
const stream_1 = require$$0$
|
|
115645
|
+
const stream_1 = require$$0$7;
|
|
115647
115646
|
const async_1 = requireAsync$3();
|
|
115648
115647
|
class StreamProvider {
|
|
115649
115648
|
constructor(_root, _settings) {
|
|
@@ -115895,7 +115894,7 @@ function requireStream$1 () {
|
|
|
115895
115894
|
if (hasRequiredStream$1) return stream$1;
|
|
115896
115895
|
hasRequiredStream$1 = 1;
|
|
115897
115896
|
Object.defineProperty(stream$1, "__esModule", { value: true });
|
|
115898
|
-
const stream_1 = require$$0$
|
|
115897
|
+
const stream_1 = require$$0$7;
|
|
115899
115898
|
const fsStat = requireOut$3();
|
|
115900
115899
|
const fsWalk = requireOut$1();
|
|
115901
115900
|
const reader_1 = requireReader();
|
|
@@ -116413,7 +116412,7 @@ function requireStream () {
|
|
|
116413
116412
|
if (hasRequiredStream) return stream;
|
|
116414
116413
|
hasRequiredStream = 1;
|
|
116415
116414
|
Object.defineProperty(stream, "__esModule", { value: true });
|
|
116416
|
-
const stream_1 = require$$0$
|
|
116415
|
+
const stream_1 = require$$0$7;
|
|
116417
116416
|
const stream_2 = requireStream$1();
|
|
116418
116417
|
const provider_1 = requireProvider();
|
|
116419
116418
|
class ProviderStream extends provider_1.default {
|
|
@@ -116539,8 +116538,8 @@ function requireSettings () {
|
|
|
116539
116538
|
(function (exports$1) {
|
|
116540
116539
|
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
116541
116540
|
exports$1.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
|
|
116542
|
-
const fs =
|
|
116543
|
-
const os = require$$0$
|
|
116541
|
+
const fs = fs__default;
|
|
116542
|
+
const os = require$$0$4;
|
|
116544
116543
|
/**
|
|
116545
116544
|
* The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.
|
|
116546
116545
|
* https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107
|
|
@@ -120010,7 +120009,7 @@ class EditorPage {
|
|
|
120010
120009
|
}).toPass({ timeout: 30_000 });
|
|
120011
120010
|
focusText = (textLocator) => expect(async () => {
|
|
120012
120011
|
await textLocator.click();
|
|
120013
|
-
await this.page.keyboard.press(require$$0$
|
|
120012
|
+
await this.page.keyboard.press(require$$0$4.platform() === "darwin" ? "Meta+ArrowRight" : "End");
|
|
120014
120013
|
await expect(textLocator.locator("..")).toHaveClass(/has-focus/, {
|
|
120015
120014
|
timeout: 5_000,
|
|
120016
120015
|
});
|
|
@@ -124950,6 +124949,160 @@ const generatePhoneNumberDetails = () => {
|
|
|
124950
124949
|
return { flag: country.flag, name: country.name, code: country.code, number };
|
|
124951
124950
|
};
|
|
124952
124951
|
|
|
124952
|
+
const CONFIG = {
|
|
124953
|
+
DIR: "/tmp/neeto-auth-web",
|
|
124954
|
+
LOG: "/tmp/neeto-auth-server.log",
|
|
124955
|
+
PORT: 9000,
|
|
124956
|
+
MAX_WAIT_MS: 120_000,
|
|
124957
|
+
EMAIL_INIT: "/tmp/neeto-auth-web/config/initializers/playwright_email_capture.rb",
|
|
124958
|
+
};
|
|
124959
|
+
const SCRIPTS_DIR = path$1.join(__dirname, "scripts", "neeto-auth");
|
|
124960
|
+
const escapeRubyString = (value) => value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
124961
|
+
const buildEmailCaptureInitializer = (targetApp) => {
|
|
124962
|
+
const template = fs$4.readFileSync(path$1.join(SCRIPTS_DIR, "playwright_email_capture.rb.template"), "utf-8");
|
|
124963
|
+
return template.replace("{{TARGET_APP}}", escapeRubyString(targetApp));
|
|
124964
|
+
};
|
|
124965
|
+
const log = (msg) => console.log(`[NeetoAuth] ${msg}`);
|
|
124966
|
+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
124967
|
+
const httpCheck = (port, timeout = 3000) => new Promise(resolve => {
|
|
124968
|
+
const req = http.get(`http://localhost:${port}/`, () => resolve(true));
|
|
124969
|
+
req.on("error", () => resolve(false));
|
|
124970
|
+
req.setTimeout(timeout, () => {
|
|
124971
|
+
req.destroy();
|
|
124972
|
+
resolve(false);
|
|
124973
|
+
});
|
|
124974
|
+
});
|
|
124975
|
+
class NeetoAuthServer {
|
|
124976
|
+
process = null;
|
|
124977
|
+
targetApp;
|
|
124978
|
+
constructor(appName) {
|
|
124979
|
+
this.targetApp = STATUS_TEXTS.appName(appName);
|
|
124980
|
+
}
|
|
124981
|
+
get serverEnv() {
|
|
124982
|
+
return {
|
|
124983
|
+
...process.env,
|
|
124984
|
+
BUNDLE_PATH: undefined,
|
|
124985
|
+
RAILS_ENV: "development",
|
|
124986
|
+
POSTGRES_USER: process.env.POSTGRES_USER ?? process.env.USER ?? "postgres",
|
|
124987
|
+
};
|
|
124988
|
+
}
|
|
124989
|
+
waitForProcessExit = async (pid) => {
|
|
124990
|
+
const deadline = Date.now() + 10_000;
|
|
124991
|
+
while (Date.now() < deadline) {
|
|
124992
|
+
try {
|
|
124993
|
+
process.kill(pid, 0);
|
|
124994
|
+
await sleep(500);
|
|
124995
|
+
}
|
|
124996
|
+
catch {
|
|
124997
|
+
return;
|
|
124998
|
+
}
|
|
124999
|
+
}
|
|
125000
|
+
};
|
|
125001
|
+
killServerOnPort = async () => {
|
|
125002
|
+
try {
|
|
125003
|
+
execSync(`lsof -ti tcp:${CONFIG.PORT} | xargs kill -9`, {
|
|
125004
|
+
stdio: "ignore",
|
|
125005
|
+
});
|
|
125006
|
+
await sleep(1000);
|
|
125007
|
+
}
|
|
125008
|
+
catch {
|
|
125009
|
+
// No process on that port — nothing to kill.
|
|
125010
|
+
}
|
|
125011
|
+
};
|
|
125012
|
+
ensureSetup = () => {
|
|
125013
|
+
if (fs$4.existsSync(`${CONFIG.DIR}/Gemfile`)) {
|
|
125014
|
+
log("Already set up, skipping.");
|
|
125015
|
+
return;
|
|
125016
|
+
}
|
|
125017
|
+
if (!process.env.GITHUB_TOKEN) {
|
|
125018
|
+
throw new Error("[NeetoAuth] GITHUB_TOKEN is not set. Cannot clone neeto-auth-web.");
|
|
125019
|
+
}
|
|
125020
|
+
log("Running first-time setup...");
|
|
125021
|
+
const setupScript = path$1.join(SCRIPTS_DIR, "setup.sh");
|
|
125022
|
+
try {
|
|
125023
|
+
execSync(`bash "${setupScript}" "${CONFIG.DIR}"`, {
|
|
125024
|
+
stdio: "inherit",
|
|
125025
|
+
env: this.serverEnv,
|
|
125026
|
+
});
|
|
125027
|
+
}
|
|
125028
|
+
catch {
|
|
125029
|
+
throw new Error("[NeetoAuth] First-time setup failed. Check the output above for details.");
|
|
125030
|
+
}
|
|
125031
|
+
log("Setup complete.");
|
|
125032
|
+
};
|
|
125033
|
+
waitForServer = async (timeoutMs = CONFIG.MAX_WAIT_MS) => {
|
|
125034
|
+
const startTime = Date.now();
|
|
125035
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
125036
|
+
if (this.process !== null && this.process.exitCode !== null) {
|
|
125037
|
+
const logContent = fs$4.existsSync(CONFIG.LOG)
|
|
125038
|
+
? fs$4.readFileSync(CONFIG.LOG, "utf-8")
|
|
125039
|
+
: "<no log file>";
|
|
125040
|
+
throw new Error(`[NeetoAuth] Server process exited unexpectedly with code ${this.process.exitCode}.\nLog:\n${logContent}`);
|
|
125041
|
+
}
|
|
125042
|
+
if (await httpCheck(CONFIG.PORT))
|
|
125043
|
+
return;
|
|
125044
|
+
await sleep(3000);
|
|
125045
|
+
}
|
|
125046
|
+
const logContent = fs$4.existsSync(CONFIG.LOG)
|
|
125047
|
+
? fs$4.readFileSync(CONFIG.LOG, "utf-8")
|
|
125048
|
+
: "<no log file>";
|
|
125049
|
+
throw new Error(`[NeetoAuth] Server did not start within ${timeoutMs / 1000}s.\nLog:\n${logContent}`);
|
|
125050
|
+
};
|
|
125051
|
+
injectEmailCaptureInitializer = () => {
|
|
125052
|
+
fs$4.writeFileSync(CONFIG.EMAIL_INIT, buildEmailCaptureInitializer(this.targetApp));
|
|
125053
|
+
};
|
|
125054
|
+
isRunningForCurrentApp = () => {
|
|
125055
|
+
if (!fs$4.existsSync(CONFIG.EMAIL_INIT))
|
|
125056
|
+
return false;
|
|
125057
|
+
const currentContent = fs$4.readFileSync(CONFIG.EMAIL_INIT, "utf-8");
|
|
125058
|
+
return currentContent === buildEmailCaptureInitializer(this.targetApp);
|
|
125059
|
+
};
|
|
125060
|
+
start = async () => {
|
|
125061
|
+
if (IS_STAGING_ENV)
|
|
125062
|
+
return;
|
|
125063
|
+
if (await httpCheck(CONFIG.PORT)) {
|
|
125064
|
+
if (this.isRunningForCurrentApp()) {
|
|
125065
|
+
log("Server already running for this app.");
|
|
125066
|
+
return;
|
|
125067
|
+
}
|
|
125068
|
+
log("Server running for a different app — restarting...");
|
|
125069
|
+
await this.killServerOnPort();
|
|
125070
|
+
}
|
|
125071
|
+
this.ensureSetup();
|
|
125072
|
+
this.injectEmailCaptureInitializer();
|
|
125073
|
+
log("Starting server...");
|
|
125074
|
+
const logStream = fs$4.createWriteStream(CONFIG.LOG);
|
|
125075
|
+
this.process = spawn("bundle", [
|
|
125076
|
+
"exec",
|
|
125077
|
+
"rails",
|
|
125078
|
+
"server",
|
|
125079
|
+
"-p",
|
|
125080
|
+
CONFIG.PORT.toString(),
|
|
125081
|
+
"-b",
|
|
125082
|
+
"0.0.0.0",
|
|
125083
|
+
], {
|
|
125084
|
+
cwd: CONFIG.DIR,
|
|
125085
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
125086
|
+
env: this.serverEnv,
|
|
125087
|
+
});
|
|
125088
|
+
this.process.stdout?.pipe(logStream);
|
|
125089
|
+
this.process.stderr?.pipe(logStream);
|
|
125090
|
+
await this.waitForServer();
|
|
125091
|
+
log("Server ready.");
|
|
125092
|
+
};
|
|
125093
|
+
stop = async () => {
|
|
125094
|
+
if (IS_STAGING_ENV || !this.process)
|
|
125095
|
+
return;
|
|
125096
|
+
const pid = this.process.pid;
|
|
125097
|
+
log("Stopping server...");
|
|
125098
|
+
this.process.kill("SIGTERM");
|
|
125099
|
+
this.process = null;
|
|
125100
|
+
if (pid) {
|
|
125101
|
+
await this.waitForProcessExit(pid);
|
|
125102
|
+
}
|
|
125103
|
+
};
|
|
125104
|
+
}
|
|
125105
|
+
|
|
124953
125106
|
var main$1 = {exports: {}};
|
|
124954
125107
|
|
|
124955
125108
|
var version = "17.3.1";
|
|
@@ -124961,10 +125114,10 @@ var hasRequiredMain$1;
|
|
|
124961
125114
|
function requireMain$1 () {
|
|
124962
125115
|
if (hasRequiredMain$1) return main$1.exports;
|
|
124963
125116
|
hasRequiredMain$1 = 1;
|
|
124964
|
-
const fs =
|
|
125117
|
+
const fs = fs__default;
|
|
124965
125118
|
const path = path__default;
|
|
124966
|
-
const os = require$$0$
|
|
124967
|
-
const crypto = require$$0$
|
|
125119
|
+
const os = require$$0$4;
|
|
125120
|
+
const crypto = require$$0$8;
|
|
124968
125121
|
const packageJson = require$$4;
|
|
124969
125122
|
|
|
124970
125123
|
const version = packageJson.version;
|
|
@@ -125515,7 +125668,7 @@ const envLocalPath = `${envBasePath}.local`;
|
|
|
125515
125668
|
const reporterPackageName = "@bigbinary/neeto-playwright-reporter";
|
|
125516
125669
|
process.env.TEST_ENV = process.env.TEST_ENV ?? ENVIRONMENT.development;
|
|
125517
125670
|
loadEnv(`${envBasePath}.${process.env.TEST_ENV}`);
|
|
125518
|
-
|
|
125671
|
+
fs$4.existsSync(envLocalPath) && loadEnv(envLocalPath);
|
|
125519
125672
|
const playdashStagingConfig = {
|
|
125520
125673
|
apiKey: process.env.PLAYDASH_STAGING_API_KEY,
|
|
125521
125674
|
ciBuildId: process.env.NEETO_CI_JOB_ID,
|
|
@@ -125711,5 +125864,5 @@ const definePlaywrightConfig = (overrides) => {
|
|
|
125711
125864
|
});
|
|
125712
125865
|
};
|
|
125713
125866
|
|
|
125714
|
-
export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CALENDAR_LABELS, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_FORMATS, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DEFAULT_WEBHOOKS_RESPONSE_TEXT, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_ROUTES, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, NeetoTowerApi, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_NAMES, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RailsEmailRakeClient, RailsEmailUtils, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
|
|
125867
|
+
export { ACTIONS, ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_SELECTORS, ApiKeysApi, ApiKeysPage, AuditLogsPage, BASE_URL, CALENDAR_LABELS, CERTIFICATE_LIMIT_EXCEEDED_MESSAGE, CERTIFICATE_LIMIT_EXCEEDED_REGEXP, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CURRENT_TIME_RANGES, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, CustomCommands, CustomDomainApi, CustomDomainPage, DATE_FORMATS, DATE_PICKER_SELECTORS, DATE_RANGES, DATE_TEXTS, DEFAULT_WEBHOOKS_RESPONSE_TEXT, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXAMPLE_URL, EXPANDED_FONT_SIZE, EXPORT_FILE_TYPES, EditorPage, EmbedBase, FILE_FORMATS, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_ANALYTICS_SELECTORS, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GOOGLE_SHEETS_SELECTORS, GooglePage, HELP_CENTER_ROUTES, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IPRestrictionsPage, IP_RESTRICTIONS_SELECTORS, IS_DEV_ENV, IS_STAGING_ENV, ImageUploader, IntegrationBase, IpRestrictionsApi, KEYBOARD_SHORTCUTS_SELECTORS, KEYBOARD_SHORTCUT_TEST_CASES, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MICROSOFT_LOGIN_SELECTORS, MICROSOFT_LOGIN_TEXTS, MailerUtils, Member, MemberApis, MicrosoftPage, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_SEO_SELECTORS, NEETO_TEXT_MODIFIER_SELECTORS, NeetoAuthServer, NeetoTowerApi, ONBOARDING_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PAST_TIME_RANGES, PHONE_NUMBER_FORMATS, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_NAMES, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RailsEmailRakeClient, RailsEmailUtils, RoleApis, RolesPage, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SecurityApi, SidebarSection, SlackApi, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEAM_MEMBER_TEXTS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THEMES_TEXTS, THIRD_PARTY_ROUTES, TIME_RANGES, TOASTR_MESSAGES, TWILIO_SELECTORS, TagsApi, TagsPage, TeamMembers, ThankYouApi, ThankYouPage, TwilioApi, USER_AGENTS, WEBHOOK_SELECTORS, WebhookSiteApi, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, createOrganizationViaRake, currencyUtils, dataQa, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, fillCredentialsAndSubmit, filterUtils, generatePhoneNumber, generatePhoneNumberDetails, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getFormattedPhoneNumber, getFullUrl, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getIsoCodeFromPhoneCode, getListCount, globalShortcuts, grantClipboardPermissions, hexToRGB, hexToRGBA, i18nFixture, imageRegex, initializeCredentials, initializeTestData, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
|
|
125715
125868
|
//# sourceMappingURL=index.js.map
|