Firefox and Safari integration tests fixes - #1029

Merged
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes
Sep 8, 2017
Merged

Firefox and Safari integration tests fixes#1029
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes

Conversation

@kamilogorek

@kamilogorekkamilogorek commented Sep 6, 2017

Copy link
Copy Markdown
Contributor

There are 2 considerations we have to take into account.

In Update captureException test assertion for Safari commit, I decreased required frames to 1, as Safari is not able to gather any more information about manually caught errors coming from non-error source, eg. strings/object. We need "at least" captureMessage call with appropriate message attached, as this is what captureException defaults to when passing non-error argument to it.

screen shot 2017-09-06 at 13 45 05

In Fix non-error throws on onerror handler on Firefox I modified normalizeFrames method to account for the worst case possible. Quoting my comment in the code:

Case when we don't have any information about the error
E.g. throwing a string or raw object in Firefox
Generating synthetic error doesn't add any value here

We should probably somehow let user know that he should fix his code

screen shot 2017-09-06 at 17 33 25

screen shot 2017-09-06 at 17 33 13

I'd appreciate feedback on both of those issue.

When this PR and #1026 get merged, we'll be all green on Chrome, Firefox and Safari on OSX and we'll be able to move forward with more tests.

NOTE: I have to update Input related tests on Phantom.js (will do that first time in the morning)

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should say "they should fix their code"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

@kamilogorekkamilogorekSep 7, 2017

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Just wanted to be a little more explicit, as we don't have function nor filename which are used in tests for in_app logic. I still left it on a separate line now though, as it's more readable with this long comment this way.

view: window
}

if ('MouseEvent' in window) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't hurt to comment these branches with the browsers they're active on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these factories are way better though 👍

MaxBittker
MaxBittker previously requested changes Sep 6, 2017

@MaxBittkerMaxBittker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely fix the comment, the normalizedFrame thing being cleaner or not is up to you. Exciting to have green tests cross browser, this is long overdue! 💯

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

Comment threadpackage.json
"test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript",
"test:unit": "mocha-chrome test/index.html",
"test:integration": "mocha-chrome test/integration/index.html --chrome-flags '[\"--disable-web-security\"]' --ignore-resource-errors --ignore-exceptions",
"test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally link linking to the version found in node_modules because collaborators often don't have node_modules/.bin on their PATH.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when you run things using yarn/npm, it'll add node_modules/.bin to search path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah

@benvinegar

Copy link
Copy Markdown
Contributor

Dismissing @MaxBittker's review because his comments appear addressed and this seems good to merge.

@benvinegar
benvinegar dismissed MaxBittker’s stale reviewSeptember 7, 2017 19:13

Feedback is addressed

- Fix MouseEvents related integration tests on Chrome
- Fix Mouse/KeyboardEvents related integration tests on Firefox
- Update captureException test assertion for Safari
- Fix non-error throws in onerror handler on Firefox
- Simplify _normalizeFrame edgecase and comment on event factories
- Use Headless Chrome instead of PhantomJS
- Reconfigure TravisCI to utilize new setup
- Remove PhantomJS guards in integration tests
- Start partial migration to npm scripts instead of Grunt
- Remove lodash and use native functions instead
- Remove redundant packages
@kamilogorek
kamilogorekforce-pushed the integration-tests-fixes branch from ece5380 to bafa99cCompareSeptember 8, 2017 08:36
@kamilogorek

Copy link
Copy Markdown
ContributorAuthor

Rebased and merged :shipit:

@kamilogorek
kamilogorek merged commit f638521 into masterSep 8, 2017
@kamilogorek
kamilogorek deleted the integration-tests-fixes branch September 8, 2017 08:37
@github-actions

Copy link
Copy Markdown
Contributor

A PR closing this issue has just been released 🚀

This issue was referenced by PR #14643, which was included in the 8.45.0 release.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamilogorek@benvinegar@billyvg@MaxBittker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Firefox and Safari integration tests fixes - #1029

Merged
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes
Sep 8, 2017
Merged

Firefox and Safari integration tests fixes#1029
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes

Conversation

@kamilogorek

@kamilogorekkamilogorek commented Sep 6, 2017

Copy link
Copy Markdown
Contributor

There are 2 considerations we have to take into account.

In Update captureException test assertion for Safari commit, I decreased required frames to 1, as Safari is not able to gather any more information about manually caught errors coming from non-error source, eg. strings/object. We need "at least" captureMessage call with appropriate message attached, as this is what captureException defaults to when passing non-error argument to it.

screen shot 2017-09-06 at 13 45 05

In Fix non-error throws on onerror handler on Firefox I modified normalizeFrames method to account for the worst case possible. Quoting my comment in the code:

Case when we don't have any information about the error
E.g. throwing a string or raw object in Firefox
Generating synthetic error doesn't add any value here

We should probably somehow let user know that he should fix his code

screen shot 2017-09-06 at 17 33 25

screen shot 2017-09-06 at 17 33 13

I'd appreciate feedback on both of those issue.

When this PR and #1026 get merged, we'll be all green on Chrome, Firefox and Safari on OSX and we'll be able to move forward with more tests.

NOTE: I have to update Input related tests on Phantom.js (will do that first time in the morning)

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should say "they should fix their code"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

@kamilogorekkamilogorekSep 7, 2017

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Just wanted to be a little more explicit, as we don't have function nor filename which are used in tests for in_app logic. I still left it on a separate line now though, as it's more readable with this long comment this way.

view: window
}

if ('MouseEvent' in window) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't hurt to comment these branches with the browsers they're active on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these factories are way better though 👍

MaxBittker
MaxBittker previously requested changes Sep 6, 2017

@MaxBittkerMaxBittker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely fix the comment, the normalizedFrame thing being cleaner or not is up to you. Exciting to have green tests cross browser, this is long overdue! 💯

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

Comment threadpackage.json
"test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript",
"test:unit": "mocha-chrome test/index.html",
"test:integration": "mocha-chrome test/integration/index.html --chrome-flags '[\"--disable-web-security\"]' --ignore-resource-errors --ignore-exceptions",
"test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally link linking to the version found in node_modules because collaborators often don't have node_modules/.bin on their PATH.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when you run things using yarn/npm, it'll add node_modules/.bin to search path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah

@benvinegar

Copy link
Copy Markdown
Contributor

Dismissing @MaxBittker's review because his comments appear addressed and this seems good to merge.

@benvinegar
benvinegar dismissed MaxBittker’s stale reviewSeptember 7, 2017 19:13

Feedback is addressed

- Fix MouseEvents related integration tests on Chrome
- Fix Mouse/KeyboardEvents related integration tests on Firefox
- Update captureException test assertion for Safari
- Fix non-error throws in onerror handler on Firefox
- Simplify _normalizeFrame edgecase and comment on event factories
- Use Headless Chrome instead of PhantomJS
- Reconfigure TravisCI to utilize new setup
- Remove PhantomJS guards in integration tests
- Start partial migration to npm scripts instead of Grunt
- Remove lodash and use native functions instead
- Remove redundant packages
@kamilogorek
kamilogorekforce-pushed the integration-tests-fixes branch from ece5380 to bafa99cCompareSeptember 8, 2017 08:36
@kamilogorek

Copy link
Copy Markdown
ContributorAuthor

Rebased and merged :shipit:

@kamilogorek
kamilogorek merged commit f638521 into masterSep 8, 2017
@kamilogorek
kamilogorek deleted the integration-tests-fixes branch September 8, 2017 08:37
@github-actions

Copy link
Copy Markdown
Contributor

A PR closing this issue has just been released 🚀

This issue was referenced by PR #14643, which was included in the 8.45.0 release.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamilogorek@benvinegar@billyvg@MaxBittker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Firefox and Safari integration tests fixes - #1029

Merged
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes
Sep 8, 2017
Merged

Firefox and Safari integration tests fixes#1029
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes

Conversation

@kamilogorek

@kamilogorekkamilogorek commented Sep 6, 2017

Copy link
Copy Markdown
Contributor

There are 2 considerations we have to take into account.

In Update captureException test assertion for Safari commit, I decreased required frames to 1, as Safari is not able to gather any more information about manually caught errors coming from non-error source, eg. strings/object. We need "at least" captureMessage call with appropriate message attached, as this is what captureException defaults to when passing non-error argument to it.

screen shot 2017-09-06 at 13 45 05

In Fix non-error throws on onerror handler on Firefox I modified normalizeFrames method to account for the worst case possible. Quoting my comment in the code:

Case when we don't have any information about the error
E.g. throwing a string or raw object in Firefox
Generating synthetic error doesn't add any value here

We should probably somehow let user know that he should fix his code

screen shot 2017-09-06 at 17 33 25

screen shot 2017-09-06 at 17 33 13

I'd appreciate feedback on both of those issue.

When this PR and #1026 get merged, we'll be all green on Chrome, Firefox and Safari on OSX and we'll be able to move forward with more tests.

NOTE: I have to update Input related tests on Phantom.js (will do that first time in the morning)

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should say "they should fix their code"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

@kamilogorekkamilogorekSep 7, 2017

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Just wanted to be a little more explicit, as we don't have function nor filename which are used in tests for in_app logic. I still left it on a separate line now though, as it's more readable with this long comment this way.

view: window
}

if ('MouseEvent' in window) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't hurt to comment these branches with the browsers they're active on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these factories are way better though 👍

MaxBittker
MaxBittker previously requested changes Sep 6, 2017

@MaxBittkerMaxBittker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely fix the comment, the normalizedFrame thing being cleaner or not is up to you. Exciting to have green tests cross browser, this is long overdue! 💯

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

Comment threadpackage.json
"test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript",
"test:unit": "mocha-chrome test/index.html",
"test:integration": "mocha-chrome test/integration/index.html --chrome-flags '[\"--disable-web-security\"]' --ignore-resource-errors --ignore-exceptions",
"test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally link linking to the version found in node_modules because collaborators often don't have node_modules/.bin on their PATH.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when you run things using yarn/npm, it'll add node_modules/.bin to search path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah

@benvinegar

Copy link
Copy Markdown
Contributor

Dismissing @MaxBittker's review because his comments appear addressed and this seems good to merge.

@benvinegar
benvinegar dismissed MaxBittker’s stale reviewSeptember 7, 2017 19:13

Feedback is addressed

- Fix MouseEvents related integration tests on Chrome
- Fix Mouse/KeyboardEvents related integration tests on Firefox
- Update captureException test assertion for Safari
- Fix non-error throws in onerror handler on Firefox
- Simplify _normalizeFrame edgecase and comment on event factories
- Use Headless Chrome instead of PhantomJS
- Reconfigure TravisCI to utilize new setup
- Remove PhantomJS guards in integration tests
- Start partial migration to npm scripts instead of Grunt
- Remove lodash and use native functions instead
- Remove redundant packages
@kamilogorek
kamilogorekforce-pushed the integration-tests-fixes branch from ece5380 to bafa99cCompareSeptember 8, 2017 08:36
@kamilogorek

Copy link
Copy Markdown
ContributorAuthor

Rebased and merged :shipit:

@kamilogorek
kamilogorek merged commit f638521 into masterSep 8, 2017
@kamilogorek
kamilogorek deleted the integration-tests-fixes branch September 8, 2017 08:37
@github-actions

Copy link
Copy Markdown
Contributor

A PR closing this issue has just been released 🚀

This issue was referenced by PR #14643, which was included in the 8.45.0 release.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamilogorek@benvinegar@billyvg@MaxBittker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Firefox and Safari integration tests fixes - #1029

Merged
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes
Sep 8, 2017
Merged

Firefox and Safari integration tests fixes#1029
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes

Conversation

@kamilogorek

@kamilogorekkamilogorek commented Sep 6, 2017

Copy link
Copy Markdown
Contributor

There are 2 considerations we have to take into account.

In Update captureException test assertion for Safari commit, I decreased required frames to 1, as Safari is not able to gather any more information about manually caught errors coming from non-error source, eg. strings/object. We need "at least" captureMessage call with appropriate message attached, as this is what captureException defaults to when passing non-error argument to it.

screen shot 2017-09-06 at 13 45 05

In Fix non-error throws on onerror handler on Firefox I modified normalizeFrames method to account for the worst case possible. Quoting my comment in the code:

Case when we don't have any information about the error
E.g. throwing a string or raw object in Firefox
Generating synthetic error doesn't add any value here

We should probably somehow let user know that he should fix his code

screen shot 2017-09-06 at 17 33 25

screen shot 2017-09-06 at 17 33 13

I'd appreciate feedback on both of those issue.

When this PR and #1026 get merged, we'll be all green on Chrome, Firefox and Safari on OSX and we'll be able to move forward with more tests.

NOTE: I have to update Input related tests on Phantom.js (will do that first time in the morning)

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should say "they should fix their code"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

@kamilogorekkamilogorekSep 7, 2017

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Just wanted to be a little more explicit, as we don't have function nor filename which are used in tests for in_app logic. I still left it on a separate line now though, as it's more readable with this long comment this way.

view: window
}

if ('MouseEvent' in window) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't hurt to comment these branches with the browsers they're active on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these factories are way better though 👍

MaxBittker
MaxBittker previously requested changes Sep 6, 2017

@MaxBittkerMaxBittker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely fix the comment, the normalizedFrame thing being cleaner or not is up to you. Exciting to have green tests cross browser, this is long overdue! 💯

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

Comment threadpackage.json
"test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript",
"test:unit": "mocha-chrome test/index.html",
"test:integration": "mocha-chrome test/integration/index.html --chrome-flags '[\"--disable-web-security\"]' --ignore-resource-errors --ignore-exceptions",
"test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally link linking to the version found in node_modules because collaborators often don't have node_modules/.bin on their PATH.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when you run things using yarn/npm, it'll add node_modules/.bin to search path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah

@benvinegar

Copy link
Copy Markdown
Contributor

Dismissing @MaxBittker's review because his comments appear addressed and this seems good to merge.

@benvinegar
benvinegar dismissed MaxBittker’s stale reviewSeptember 7, 2017 19:13

Feedback is addressed

- Fix MouseEvents related integration tests on Chrome
- Fix Mouse/KeyboardEvents related integration tests on Firefox
- Update captureException test assertion for Safari
- Fix non-error throws in onerror handler on Firefox
- Simplify _normalizeFrame edgecase and comment on event factories
- Use Headless Chrome instead of PhantomJS
- Reconfigure TravisCI to utilize new setup
- Remove PhantomJS guards in integration tests
- Start partial migration to npm scripts instead of Grunt
- Remove lodash and use native functions instead
- Remove redundant packages
@kamilogorek
kamilogorekforce-pushed the integration-tests-fixes branch from ece5380 to bafa99cCompareSeptember 8, 2017 08:36
@kamilogorek

Copy link
Copy Markdown
ContributorAuthor

Rebased and merged :shipit:

@kamilogorek
kamilogorek merged commit f638521 into masterSep 8, 2017
@kamilogorek
kamilogorek deleted the integration-tests-fixes branch September 8, 2017 08:37
@github-actions

Copy link
Copy Markdown
Contributor

A PR closing this issue has just been released 🚀

This issue was referenced by PR #14643, which was included in the 8.45.0 release.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamilogorek@benvinegar@billyvg@MaxBittker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Firefox and Safari integration tests fixes - #1029

Merged
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes
Sep 8, 2017
Merged

Firefox and Safari integration tests fixes#1029
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes

Conversation

@kamilogorek

@kamilogorekkamilogorek commented Sep 6, 2017

Copy link
Copy Markdown
Contributor

There are 2 considerations we have to take into account.

In Update captureException test assertion for Safari commit, I decreased required frames to 1, as Safari is not able to gather any more information about manually caught errors coming from non-error source, eg. strings/object. We need "at least" captureMessage call with appropriate message attached, as this is what captureException defaults to when passing non-error argument to it.

screen shot 2017-09-06 at 13 45 05

In Fix non-error throws on onerror handler on Firefox I modified normalizeFrames method to account for the worst case possible. Quoting my comment in the code:

Case when we don't have any information about the error
E.g. throwing a string or raw object in Firefox
Generating synthetic error doesn't add any value here

We should probably somehow let user know that he should fix his code

screen shot 2017-09-06 at 17 33 25

screen shot 2017-09-06 at 17 33 13

I'd appreciate feedback on both of those issue.

When this PR and #1026 get merged, we'll be all green on Chrome, Firefox and Safari on OSX and we'll be able to move forward with more tests.

NOTE: I have to update Input related tests on Phantom.js (will do that first time in the morning)

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should say "they should fix their code"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

@kamilogorekkamilogorekSep 7, 2017

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Just wanted to be a little more explicit, as we don't have function nor filename which are used in tests for in_app logic. I still left it on a separate line now though, as it's more readable with this long comment this way.

view: window
}

if ('MouseEvent' in window) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't hurt to comment these branches with the browsers they're active on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these factories are way better though 👍

MaxBittker
MaxBittker previously requested changes Sep 6, 2017

@MaxBittkerMaxBittker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely fix the comment, the normalizedFrame thing being cleaner or not is up to you. Exciting to have green tests cross browser, this is long overdue! 💯

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

Comment threadpackage.json
"test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript",
"test:unit": "mocha-chrome test/index.html",
"test:integration": "mocha-chrome test/integration/index.html --chrome-flags '[\"--disable-web-security\"]' --ignore-resource-errors --ignore-exceptions",
"test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally link linking to the version found in node_modules because collaborators often don't have node_modules/.bin on their PATH.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when you run things using yarn/npm, it'll add node_modules/.bin to search path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah

@benvinegar

Copy link
Copy Markdown
Contributor

Dismissing @MaxBittker's review because his comments appear addressed and this seems good to merge.

@benvinegar
benvinegar dismissed MaxBittker’s stale reviewSeptember 7, 2017 19:13

Feedback is addressed

- Fix MouseEvents related integration tests on Chrome
- Fix Mouse/KeyboardEvents related integration tests on Firefox
- Update captureException test assertion for Safari
- Fix non-error throws in onerror handler on Firefox
- Simplify _normalizeFrame edgecase and comment on event factories
- Use Headless Chrome instead of PhantomJS
- Reconfigure TravisCI to utilize new setup
- Remove PhantomJS guards in integration tests
- Start partial migration to npm scripts instead of Grunt
- Remove lodash and use native functions instead
- Remove redundant packages
@kamilogorek
kamilogorekforce-pushed the integration-tests-fixes branch from ece5380 to bafa99cCompareSeptember 8, 2017 08:36
@kamilogorek

Copy link
Copy Markdown
ContributorAuthor

Rebased and merged :shipit:

@kamilogorek
kamilogorek merged commit f638521 into masterSep 8, 2017
@kamilogorek
kamilogorek deleted the integration-tests-fixes branch September 8, 2017 08:37
@github-actions

Copy link
Copy Markdown
Contributor

A PR closing this issue has just been released 🚀

This issue was referenced by PR #14643, which was included in the 8.45.0 release.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamilogorek@benvinegar@billyvg@MaxBittker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Firefox and Safari integration tests fixes - #1029

Merged
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes
Sep 8, 2017
Merged

Firefox and Safari integration tests fixes#1029
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes

Conversation

@kamilogorek

@kamilogorekkamilogorek commented Sep 6, 2017

Copy link
Copy Markdown
Contributor

There are 2 considerations we have to take into account.

In Update captureException test assertion for Safari commit, I decreased required frames to 1, as Safari is not able to gather any more information about manually caught errors coming from non-error source, eg. strings/object. We need "at least" captureMessage call with appropriate message attached, as this is what captureException defaults to when passing non-error argument to it.

screen shot 2017-09-06 at 13 45 05

In Fix non-error throws on onerror handler on Firefox I modified normalizeFrames method to account for the worst case possible. Quoting my comment in the code:

Case when we don't have any information about the error
E.g. throwing a string or raw object in Firefox
Generating synthetic error doesn't add any value here

We should probably somehow let user know that he should fix his code

screen shot 2017-09-06 at 17 33 25

screen shot 2017-09-06 at 17 33 13

I'd appreciate feedback on both of those issue.

When this PR and #1026 get merged, we'll be all green on Chrome, Firefox and Safari on OSX and we'll be able to move forward with more tests.

NOTE: I have to update Input related tests on Phantom.js (will do that first time in the morning)

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should say "they should fix their code"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

@kamilogorekkamilogorekSep 7, 2017

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Just wanted to be a little more explicit, as we don't have function nor filename which are used in tests for in_app logic. I still left it on a separate line now though, as it's more readable with this long comment this way.

view: window
}

if ('MouseEvent' in window) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't hurt to comment these branches with the browsers they're active on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these factories are way better though 👍

MaxBittker
MaxBittker previously requested changes Sep 6, 2017

@MaxBittkerMaxBittker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely fix the comment, the normalizedFrame thing being cleaner or not is up to you. Exciting to have green tests cross browser, this is long overdue! 💯

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

Comment threadpackage.json
"test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript",
"test:unit": "mocha-chrome test/index.html",
"test:integration": "mocha-chrome test/integration/index.html --chrome-flags '[\"--disable-web-security\"]' --ignore-resource-errors --ignore-exceptions",
"test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally link linking to the version found in node_modules because collaborators often don't have node_modules/.bin on their PATH.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when you run things using yarn/npm, it'll add node_modules/.bin to search path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah

@benvinegar

Copy link
Copy Markdown
Contributor

Dismissing @MaxBittker's review because his comments appear addressed and this seems good to merge.

@benvinegar
benvinegar dismissed MaxBittker’s stale reviewSeptember 7, 2017 19:13

Feedback is addressed

- Fix MouseEvents related integration tests on Chrome
- Fix Mouse/KeyboardEvents related integration tests on Firefox
- Update captureException test assertion for Safari
- Fix non-error throws in onerror handler on Firefox
- Simplify _normalizeFrame edgecase and comment on event factories
- Use Headless Chrome instead of PhantomJS
- Reconfigure TravisCI to utilize new setup
- Remove PhantomJS guards in integration tests
- Start partial migration to npm scripts instead of Grunt
- Remove lodash and use native functions instead
- Remove redundant packages
@kamilogorek
kamilogorekforce-pushed the integration-tests-fixes branch from ece5380 to bafa99cCompareSeptember 8, 2017 08:36
@kamilogorek

Copy link
Copy Markdown
ContributorAuthor

Rebased and merged :shipit:

@kamilogorek
kamilogorek merged commit f638521 into masterSep 8, 2017
@kamilogorek
kamilogorek deleted the integration-tests-fixes branch September 8, 2017 08:37
@github-actions

Copy link
Copy Markdown
Contributor

A PR closing this issue has just been released 🚀

This issue was referenced by PR #14643, which was included in the 8.45.0 release.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamilogorek@benvinegar@billyvg@MaxBittker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Firefox and Safari integration tests fixes - #1029

Merged
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes
Sep 8, 2017
Merged

Firefox and Safari integration tests fixes#1029
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes

Conversation

@kamilogorek

@kamilogorekkamilogorek commented Sep 6, 2017

Copy link
Copy Markdown
Contributor

There are 2 considerations we have to take into account.

In Update captureException test assertion for Safari commit, I decreased required frames to 1, as Safari is not able to gather any more information about manually caught errors coming from non-error source, eg. strings/object. We need "at least" captureMessage call with appropriate message attached, as this is what captureException defaults to when passing non-error argument to it.

screen shot 2017-09-06 at 13 45 05

In Fix non-error throws on onerror handler on Firefox I modified normalizeFrames method to account for the worst case possible. Quoting my comment in the code:

Case when we don't have any information about the error
E.g. throwing a string or raw object in Firefox
Generating synthetic error doesn't add any value here

We should probably somehow let user know that he should fix his code

screen shot 2017-09-06 at 17 33 25

screen shot 2017-09-06 at 17 33 13

I'd appreciate feedback on both of those issue.

When this PR and #1026 get merged, we'll be all green on Chrome, Firefox and Safari on OSX and we'll be able to move forward with more tests.

NOTE: I have to update Input related tests on Phantom.js (will do that first time in the morning)

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should say "they should fix their code"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

@kamilogorekkamilogorekSep 7, 2017

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Just wanted to be a little more explicit, as we don't have function nor filename which are used in tests for in_app logic. I still left it on a separate line now though, as it's more readable with this long comment this way.

view: window
}

if ('MouseEvent' in window) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't hurt to comment these branches with the browsers they're active on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these factories are way better though 👍

MaxBittker
MaxBittker previously requested changes Sep 6, 2017

@MaxBittkerMaxBittker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely fix the comment, the normalizedFrame thing being cleaner or not is up to you. Exciting to have green tests cross browser, this is long overdue! 💯

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

Comment threadpackage.json
"test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript",
"test:unit": "mocha-chrome test/index.html",
"test:integration": "mocha-chrome test/integration/index.html --chrome-flags '[\"--disable-web-security\"]' --ignore-resource-errors --ignore-exceptions",
"test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally link linking to the version found in node_modules because collaborators often don't have node_modules/.bin on their PATH.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when you run things using yarn/npm, it'll add node_modules/.bin to search path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah

@benvinegar

Copy link
Copy Markdown
Contributor

Dismissing @MaxBittker's review because his comments appear addressed and this seems good to merge.

@benvinegar
benvinegar dismissed MaxBittker’s stale reviewSeptember 7, 2017 19:13

Feedback is addressed

- Fix MouseEvents related integration tests on Chrome
- Fix Mouse/KeyboardEvents related integration tests on Firefox
- Update captureException test assertion for Safari
- Fix non-error throws in onerror handler on Firefox
- Simplify _normalizeFrame edgecase and comment on event factories
- Use Headless Chrome instead of PhantomJS
- Reconfigure TravisCI to utilize new setup
- Remove PhantomJS guards in integration tests
- Start partial migration to npm scripts instead of Grunt
- Remove lodash and use native functions instead
- Remove redundant packages
@kamilogorek
kamilogorekforce-pushed the integration-tests-fixes branch from ece5380 to bafa99cCompareSeptember 8, 2017 08:36
@kamilogorek

Copy link
Copy Markdown
ContributorAuthor

Rebased and merged :shipit:

@kamilogorek
kamilogorek merged commit f638521 into masterSep 8, 2017
@kamilogorek
kamilogorek deleted the integration-tests-fixes branch September 8, 2017 08:37
@github-actions

Copy link
Copy Markdown
Contributor

A PR closing this issue has just been released 🚀

This issue was referenced by PR #14643, which was included in the 8.45.0 release.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamilogorek@benvinegar@billyvg@MaxBittker
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Firefox and Safari integration tests fixes - #1029

Merged
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes
Sep 8, 2017
Merged

Firefox and Safari integration tests fixes#1029
kamilogorek merged 2 commits into
masterfrom
integration-tests-fixes

Conversation

@kamilogorek

@kamilogorekkamilogorek commented Sep 6, 2017

Copy link
Copy Markdown
Contributor

There are 2 considerations we have to take into account.

In Update captureException test assertion for Safari commit, I decreased required frames to 1, as Safari is not able to gather any more information about manually caught errors coming from non-error source, eg. strings/object. We need "at least" captureMessage call with appropriate message attached, as this is what captureException defaults to when passing non-error argument to it.

screen shot 2017-09-06 at 13 45 05

In Fix non-error throws on onerror handler on Firefox I modified normalizeFrames method to account for the worst case possible. Quoting my comment in the code:

Case when we don't have any information about the error
E.g. throwing a string or raw object in Firefox
Generating synthetic error doesn't add any value here

We should probably somehow let user know that he should fix his code

screen shot 2017-09-06 at 17 33 25

screen shot 2017-09-06 at 17 33 13

I'd appreciate feedback on both of those issue.

When this PR and #1026 get merged, we'll be all green on Chrome, Firefox and Safari on OSX and we'll be able to move forward with more tests.

NOTE: I have to update Input related tests on Phantom.js (will do that first time in the morning)

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should say "they should fix their code"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

@kamilogorekkamilogorekSep 7, 2017

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Just wanted to be a little more explicit, as we don't have function nor filename which are used in tests for in_app logic. I still left it on a separate line now though, as it's more readable with this long comment this way.

view: window
}

if ('MouseEvent' in window) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't hurt to comment these branches with the browsers they're active on

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these factories are way better though 👍

MaxBittker
MaxBittker previously requested changes Sep 6, 2017

@MaxBittkerMaxBittker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely fix the comment, the normalizedFrame thing being cleaner or not is up to you. Exciting to have green tests cross browser, this is long overdue! 💯

Comment threadsrc/raven.js Outdated
// E.g. throwing a string or raw object in Firefox
// Generating synthetic error doesn't add any value here
//
// We should probably somehow let user know that he should fix his code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in_app and filename are the only changed keys here, right? would it be simpler to just make the normalized object assign filename : frame.url || stackInfoUrl, and rely on the existing logic for in_app? or does in_app actually return a false positive in this case?

Comment threadpackage.json
"test": "npm run lint && grunt build.test && npm run test:unit && npm run test:integration && npm run test:typescript",
"test:unit": "mocha-chrome test/index.html",
"test:integration": "mocha-chrome test/integration/index.html --chrome-flags '[\"--disable-web-security\"]' --ignore-resource-errors --ignore-exceptions",
"test:typescript": "tsc --noEmit --noImplicitAny typescript/raven-tests.ts"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally link linking to the version found in node_modules because collaborators often don't have node_modules/.bin on their PATH.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think when you run things using yarn/npm, it'll add node_modules/.bin to search path.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah

@benvinegar

Copy link
Copy Markdown
Contributor

Dismissing @MaxBittker's review because his comments appear addressed and this seems good to merge.

@benvinegar
benvinegar dismissed MaxBittker’s stale reviewSeptember 7, 2017 19:13

Feedback is addressed

- Fix MouseEvents related integration tests on Chrome
- Fix Mouse/KeyboardEvents related integration tests on Firefox
- Update captureException test assertion for Safari
- Fix non-error throws in onerror handler on Firefox
- Simplify _normalizeFrame edgecase and comment on event factories
- Use Headless Chrome instead of PhantomJS
- Reconfigure TravisCI to utilize new setup
- Remove PhantomJS guards in integration tests
- Start partial migration to npm scripts instead of Grunt
- Remove lodash and use native functions instead
- Remove redundant packages
@kamilogorek
kamilogorekforce-pushed the integration-tests-fixes branch from ece5380 to bafa99cCompareSeptember 8, 2017 08:36
@kamilogorek

Copy link
Copy Markdown
ContributorAuthor

Rebased and merged :shipit:

@kamilogorek
kamilogorek merged commit f638521 into masterSep 8, 2017
@kamilogorek
kamilogorek deleted the integration-tests-fixes branch September 8, 2017 08:37
@github-actions

Copy link
Copy Markdown
Contributor

A PR closing this issue has just been released 🚀

This issue was referenced by PR #14643, which was included in the 8.45.0 release.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@kamilogorek@benvinegar@billyvg@MaxBittker