Skip to content

Commit cab99db

Browse files
committed
refactor
1 parent e35c4c1 commit cab99db

File tree

5 files changed

+29
-251
lines changed

5 files changed

+29
-251
lines changed

bin/accessibility-automation/cypress/index.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ Cypress.on('test:before:run', () => {
77
if (extensionPath !== undefined) {
88
new Promise((resolve, reject) => {
99
window.parent.addEventListener('A11Y_TAP_STARTED', () => {
10-
console.log("A11Y_TAP_STARTED !!!! resolving")
1110
resolve("A11Y_TAP_STARTED");
12-
console.log("A11Y_TAP_STARTED !!!! after resolve")
1311
});
1412
const e = new CustomEvent('A11Y_FORCE_START');
1513
window.parent.dispatchEvent(e);

bin/accessibility-automation/helper.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ exports.createAccessibilityTestRun = async (user_config, framework) => {
8989

9090
this.setAccessibilityCypressCapabilities(user_config, response.data);
9191
setAccessibilityEventListeners();
92+
// setEventListeners();
93+
9294

9395
} catch (error) {
9496
if (error.response) {
@@ -115,7 +117,9 @@ exports.createAccessibilityTestRun = async (user_config, framework) => {
115117
}`
116118
);
117119
}
118-
user_config.accessibility = false; // since create accessibility session failed
120+
// since create accessibility session failed
121+
process.env.BROWSERSTACK_TEST_ACCESSIBILITY = 'false';
122+
user_config.run_settings.accessibility = false;
119123
}
120124
}
121125
}

bin/accessibility-automation/plugin/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ const browserstackAccessibility = (on, config) => {
3434
})
3535
config.env.ACCESSIBILITY_EXTENSION_PATH = process.env.ACCESSIBILITY_EXTENSION_PATH
3636
config.env.OS_VERSION = process.env.OS_VERSION
37+
config.env.OS = process.env.SESSION_OS
38+
3739
config.env.IS_ACCESSIBILITY_EXTENSION_LOADED = browser_validation.toString()
3840

3941
config.env.INCLUDE_TAGS_FOR_ACCESSIBILITY = process.env.ACCESSIBILITY_INCLUDETAGSINTESTINGSCOPE
@@ -42,4 +44,4 @@ const browserstackAccessibility = (on, config) => {
4244
return config;
4345
}
4446

45-
module.exports = browserstackAccessibility;
47+
module.exports = browserstackAccessibility;

bin/helpers/helper.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ const gitconfig = require('gitconfiglocal');
1515
const { spawn, execSync } = require('child_process');
1616
const glob = require('glob');
1717
const pGitconfig = promisify(gitconfig);
18+
const CrashReporter = require('../testObservability/crashReporter');
19+
20+
exports.debug = (text, shouldReport = false, throwable = null) => {
21+
if (process.env.BROWSERSTACK_OBSERVABILITY_DEBUG === "true" || process.env.BROWSERSTACK_OBSERVABILITY_DEBUG === "1") {
22+
logger.info(`[ OBSERVABILITY ] ${text}`);
23+
}
24+
if(shouldReport) {
25+
CrashReporter.getInstance().uploadCrashReport(text, throwable ? throwable && throwable.stack : null);
26+
}
27+
}
1828

1929
exports.getFileSeparatorData = () => {
2030
return /^win/.test(process.platform) ? "\\" : "/";
@@ -45,7 +55,7 @@ exports.getPackageVersion = (package_, bsConfig = null) => {
4555
logger.info(`Getting ${package_} package version from module path = ${packages[package_]}`);
4656
packageVersion = packages[package_];
4757
} catch(e) {
48-
logger.debug(`Unable to find package ${package_} at module path with error ${e}`);
58+
exports.debug(`Unable to find package ${package_} at module path with error ${e}`);
4959
}
5060

5161
/* Read package version from npm_dependencies in browserstack.json file if present */
@@ -87,13 +97,15 @@ exports.getGitMetaData = () => {
8797
var info = getRepoInfo();
8898
if(!info.commonGitDir) {
8999
logger.debug(`Unable to find a Git directory`);
100+
exports.debug(`Unable to find a Git directory`);
90101
resolve({});
91102
}
92103
if(!info.author && exports.findGitConfig(process.cwd())) {
93104
/* commit objects are packed */
94105
gitLastCommit.getLastCommit(async (err, commit) => {
95106
if(err) {
96107
logger.debug(`Exception in populating Git Metadata with error : ${err}`, true, err);
108+
exports.debug(`Exception in populating Git Metadata with error : ${err}`, true, err);
97109
return resolve({});
98110
}
99111
try {
@@ -124,6 +136,7 @@ exports.getGitMetaData = () => {
124136
"remotes": remotes
125137
});
126138
} catch(e) {
139+
exports.debug(`Exception in populating Git Metadata with error : ${e}`, true, e);
127140
logger.debug(`Exception in populating Git Metadata with error : ${e}`, true, e);
128141
return resolve({});
129142
}
@@ -151,12 +164,12 @@ exports.getGitMetaData = () => {
151164
});
152165
}
153166
} catch(err) {
167+
exports.debug(`Exception in populating Git metadata with error : ${err}`, true, err);
154168
logger.debug(`Exception in populating Git metadata with error : ${err}`, true, err);
155169
resolve({});
156170
}
157171
})
158172
}
159-
160173
exports.getCiInfo = () => {
161174
var env = process.env;
162175
// Jenkins

bin/testObservability/helper/helper.js

Lines changed: 6 additions & 245 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ const httpsScreenshotsKeepAliveAgent = new https.Agent({
5555
});
5656

5757
const supportFileCleanup = () => {
58-
return;
5958
Object.keys(supportFileContentMap).forEach(file => {
6059
try {
6160
fs.writeFileSync(file, supportFileContentMap[file], {encoding: 'utf-8'});
@@ -163,244 +162,6 @@ exports.getTestEnv = () => {
163162
}
164163
}
165164

166-
exports.getFileSeparatorData = () => {
167-
return /^win/.test(process.platform) ? "\\" : "/";
168-
}
169-
170-
exports.findGitConfig = (filePath) => {
171-
const fileSeparator = exports.getFileSeparatorData();
172-
if(filePath == null || filePath == '' || filePath == fileSeparator) {
173-
return null;
174-
}
175-
try {
176-
fs.statSync(filePath + fileSeparator + '.git' + fileSeparator + 'config');
177-
return filePath;
178-
} catch(e) {
179-
let parentFilePath = filePath.split(fileSeparator);
180-
parentFilePath.pop();
181-
return exports.findGitConfig(parentFilePath.join(fileSeparator));
182-
}
183-
}
184-
185-
const getGitMetaData = () => {
186-
return new Promise(async (resolve, reject) => {
187-
try {
188-
var info = getRepoInfo();
189-
if(!info.commonGitDir) {
190-
exports.debug(`Unable to find a Git directory`);
191-
resolve({});
192-
}
193-
if(!info.author && exports.findGitConfig(process.cwd())) {
194-
/* commit objects are packed */
195-
gitLastCommit.getLastCommit(async (err, commit) => {
196-
if(err) {
197-
exports.debug(`Exception in populating Git Metadata with error : ${err}`, true, err);
198-
return resolve({});
199-
}
200-
try {
201-
info["author"] = info["author"] || `${commit["author"]["name"].replace(/[]+/g, '')} <${commit["author"]["email"].replace(/[]+/g, '')}>`;
202-
info["authorDate"] = info["authorDate"] || commit["authoredOn"];
203-
info["committer"] = info["committer"] || `${commit["committer"]["name"].replace(/[]+/g, '')} <${commit["committer"]["email"].replace(/[]+/g, '')}>`;
204-
info["committerDate"] = info["committerDate"] || commit["committedOn"];
205-
info["commitMessage"] = info["commitMessage"] || commit["subject"];
206-
207-
const { remote } = await pGitconfig(info.commonGitDir);
208-
const remotes = Object.keys(remote).map(remoteName => ({name: remoteName, url: remote[remoteName]['url']}));
209-
resolve({
210-
"name": "git",
211-
"sha": info["sha"],
212-
"short_sha": info["abbreviatedSha"],
213-
"branch": info["branch"],
214-
"tag": info["tag"],
215-
"committer": info["committer"],
216-
"committer_date": info["committerDate"],
217-
"author": info["author"],
218-
"author_date": info["authorDate"],
219-
"commit_message": info["commitMessage"],
220-
"root": info["root"],
221-
"common_git_dir": info["commonGitDir"],
222-
"worktree_git_dir": info["worktreeGitDir"],
223-
"last_tag": info["lastTag"],
224-
"commits_since_last_tag": info["commitsSinceLastTag"],
225-
"remotes": remotes
226-
});
227-
} catch(e) {
228-
exports.debug(`Exception in populating Git Metadata with error : ${e}`, true, e);
229-
return resolve({});
230-
}
231-
}, {dst: exports.findGitConfig(process.cwd())});
232-
} else {
233-
const { remote } = await pGitconfig(info.commonGitDir);
234-
const remotes = Object.keys(remote).map(remoteName => ({name: remoteName, url: remote[remoteName]['url']}));
235-
resolve({
236-
"name": "git",
237-
"sha": info["sha"],
238-
"short_sha": info["abbreviatedSha"],
239-
"branch": info["branch"],
240-
"tag": info["tag"],
241-
"committer": info["committer"],
242-
"committer_date": info["committerDate"],
243-
"author": info["author"],
244-
"author_date": info["authorDate"],
245-
"commit_message": info["commitMessage"],
246-
"root": info["root"],
247-
"common_git_dir": info["commonGitDir"],
248-
"worktree_git_dir": info["worktreeGitDir"],
249-
"last_tag": info["lastTag"],
250-
"commits_since_last_tag": info["commitsSinceLastTag"],
251-
"remotes": remotes
252-
});
253-
}
254-
} catch(err) {
255-
exports.debug(`Exception in populating Git metadata with error : ${err}`, true, err);
256-
resolve({});
257-
}
258-
})
259-
}
260-
261-
const getCiInfo = () => {
262-
var env = process.env;
263-
// Jenkins
264-
if ((typeof env.JENKINS_URL === "string" && env.JENKINS_URL.length > 0) || (typeof env.JENKINS_HOME === "string" && env.JENKINS_HOME.length > 0)) {
265-
return {
266-
name: "Jenkins",
267-
build_url: env.BUILD_URL,
268-
job_name: env.JOB_NAME,
269-
build_number: env.BUILD_NUMBER
270-
}
271-
}
272-
// CircleCI
273-
if (env.CI === "true" && env.CIRCLECI === "true") {
274-
return {
275-
name: "CircleCI",
276-
build_url: env.CIRCLE_BUILD_URL,
277-
job_name: env.CIRCLE_JOB,
278-
build_number: env.CIRCLE_BUILD_NUM
279-
}
280-
}
281-
// Travis CI
282-
if (env.CI === "true" && env.TRAVIS === "true") {
283-
return {
284-
name: "Travis CI",
285-
build_url: env.TRAVIS_BUILD_WEB_URL,
286-
job_name: env.TRAVIS_JOB_NAME,
287-
build_number: env.TRAVIS_BUILD_NUMBER
288-
}
289-
}
290-
// Codeship
291-
if (env.CI === "true" && env.CI_NAME === "codeship") {
292-
return {
293-
name: "Codeship",
294-
build_url: null,
295-
job_name: null,
296-
build_number: null
297-
}
298-
}
299-
// Bitbucket
300-
if (env.BITBUCKET_BRANCH && env.BITBUCKET_COMMIT) {
301-
return {
302-
name: "Bitbucket",
303-
build_url: env.BITBUCKET_GIT_HTTP_ORIGIN,
304-
job_name: null,
305-
build_number: env.BITBUCKET_BUILD_NUMBER
306-
}
307-
}
308-
// Drone
309-
if (env.CI === "true" && env.DRONE === "true") {
310-
return {
311-
name: "Drone",
312-
build_url: env.DRONE_BUILD_LINK,
313-
job_name: null,
314-
build_number: env.DRONE_BUILD_NUMBER
315-
}
316-
}
317-
// Semaphore
318-
if (env.CI === "true" && env.SEMAPHORE === "true") {
319-
return {
320-
name: "Semaphore",
321-
build_url: env.SEMAPHORE_ORGANIZATION_URL,
322-
job_name: env.SEMAPHORE_JOB_NAME,
323-
build_number: env.SEMAPHORE_JOB_ID
324-
}
325-
}
326-
// GitLab
327-
if (env.CI === "true" && env.GITLAB_CI === "true") {
328-
return {
329-
name: "GitLab",
330-
build_url: env.CI_JOB_URL,
331-
job_name: env.CI_JOB_NAME,
332-
build_number: env.CI_JOB_ID
333-
}
334-
}
335-
// Buildkite
336-
if (env.CI === "true" && env.BUILDKITE === "true") {
337-
return {
338-
name: "Buildkite",
339-
build_url: env.BUILDKITE_BUILD_URL,
340-
job_name: env.BUILDKITE_LABEL || env.BUILDKITE_PIPELINE_NAME,
341-
build_number: env.BUILDKITE_BUILD_NUMBER
342-
}
343-
}
344-
// Visual Studio Team Services
345-
if (env.TF_BUILD === "True") {
346-
return {
347-
name: "Visual Studio Team Services",
348-
build_url: `${env.SYSTEM_TEAMFOUNDATIONSERVERURI}${env.SYSTEM_TEAMPROJECTID}`,
349-
job_name: env.SYSTEM_DEFINITIONID,
350-
build_number: env.BUILD_BUILDID
351-
}
352-
}
353-
// if no matches, return null
354-
return null;
355-
}
356-
357-
let packages = {};
358-
359-
exports.getPackageVersion = (package_, bsConfig = null) => {
360-
if(packages[package_]) return packages[package_];
361-
let packageVersion;
362-
/* Try to find version from module path */
363-
try {
364-
packages[package_] = this.requireModule(`${package_}/package.json`).version;
365-
logger.info(`Getting ${package_} package version from module path = ${packages[package_]}`);
366-
packageVersion = packages[package_];
367-
} catch(e) {
368-
exports.debug(`Unable to find package ${package_} at module path with error ${e}`);
369-
}
370-
371-
/* Read package version from npm_dependencies in browserstack.json file if present */
372-
if(utils.isUndefined(packageVersion) && bsConfig && (process.env.BROWSERSTACK_AUTOMATION == "true" || process.env.BROWSERSTACK_AUTOMATION == "1")) {
373-
const runSettings = bsConfig.run_settings;
374-
if (runSettings && runSettings.npm_dependencies !== undefined &&
375-
Object.keys(runSettings.npm_dependencies).length !== 0 &&
376-
typeof runSettings.npm_dependencies === 'object') {
377-
if (package_ in runSettings.npm_dependencies) {
378-
packages[package_] = runSettings.npm_dependencies[package_];
379-
logger.info(`Getting ${package_} package version from browserstack.json = ${packages[package_]}`);
380-
packageVersion = packages[package_];
381-
}
382-
}
383-
}
384-
385-
/* Read package version from project's package.json if present */
386-
const packageJSONPath = path.join(process.cwd(), 'package.json');
387-
if(utils.isUndefined(packageVersion) && fs.existsSync(packageJSONPath)) {
388-
const packageJSONContents = require(packageJSONPath);
389-
if(packageJSONContents.devDependencies && !utils.isUndefined(packageJSONContents.devDependencies[package_])) packages[package_] = packageJSONContents.devDependencies[package_];
390-
if(packageJSONContents.dependencies && !utils.isUndefined(packageJSONContents.dependencies[package_])) packages[package_] = packageJSONContents.dependencies[package_];
391-
logger.info(`Getting ${package_} package version from package.json = ${packages[package_]}`);
392-
packageVersion = packages[package_];
393-
}
394-
395-
return packageVersion;
396-
}
397-
398-
exports.getAgentVersion = () => {
399-
let _path = path.join(__dirname, '../../../package.json');
400-
if(fs.existsSync(_path))
401-
return require(_path).version;
402-
}
403-
404165
const setEnvironmentVariablesForRemoteReporter = (BS_TESTOPS_JWT, BS_TESTOPS_BUILD_HASHED_ID, BS_TESTOPS_ALLOW_SCREENSHOTS, OBSERVABILITY_LAUNCH_SDK_VERSION) => {
405166
process.env.BS_TESTOPS_JWT = BS_TESTOPS_JWT;
406167
process.env.BS_TESTOPS_BUILD_HASHED_ID = BS_TESTOPS_BUILD_HASHED_ID;
@@ -483,7 +244,7 @@ const setBrowserstackCypressCliDependency = (bsConfig) => {
483244
typeof runSettings.npm_dependencies === 'object') {
484245
if (!("browserstack-cypress-cli" in runSettings.npm_dependencies)) {
485246
logger.warn("Missing browserstack-cypress-cli not found in npm_dependencies");
486-
runSettings.npm_dependencies['browserstack-cypress-cli'] = exports.getAgentVersion() || "latest";
247+
runSettings.npm_dependencies['browserstack-cypress-cli'] = helper.getAgentVersion() || "latest";
487248
logger.warn(`Adding browserstack-cypress-cli version ${runSettings.npm_dependencies['browserstack-cypress-cli']} in npm_dependencies`);
488249
}
489250
}
@@ -567,14 +328,14 @@ exports.launchTestSession = async (user_config, bsConfigPath) => {
567328
version: os.version(),
568329
arch: os.arch()
569330
},
570-
'ci_info': getCiInfo(),
331+
'ci_info': helper.getCiInfo(),
571332
'build_run_identifier': process.env.BROWSERSTACK_BUILD_RUN_IDENTIFIER,
572333
'failed_tests_rerun': process.env.BROWSERSTACK_RERUN || false,
573-
'version_control': await getGitMetaData(),
334+
'version_control': await helper.getGitMetaData(),
574335
'observability_version': {
575336
frameworkName: "Cypress",
576-
frameworkVersion: exports.getPackageVersion('cypress', user_config),
577-
sdkVersion: exports.getAgentVersion()
337+
frameworkVersion: helper.getPackageVersion('cypress', user_config),
338+
sdkVersion: helper.getAgentVersion()
578339
}
579340
};
580341
const config = {
@@ -592,7 +353,7 @@ exports.launchTestSession = async (user_config, bsConfigPath) => {
592353
exports.debug('Build creation successfull!');
593354
process.env.BS_TESTOPS_BUILD_COMPLETED = true;
594355
setEnvironmentVariablesForRemoteReporter(response.data.jwt, response.data.build_hashed_id, response.data.allow_screenshots, data.observability_version.sdkVersion);
595-
setEventListeners();
356+
// setEventListeners();
596357
if(this.isBrowserstackInfra()) setBrowserstackCypressCliDependency(user_config);
597358
} catch(error) {
598359
if(!error.errorType) {

0 commit comments

Comments
 (0)