fix(browser): allow updating total specs count - #3264

Merged
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count
Feb 13, 2019
Merged

fix(browser): allow updating total specs count#3264
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count

Conversation

@matz3

@matz3matz3 commented Feb 13, 2019

Copy link
Copy Markdown
Contributor

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.

Regarding tests
I wanted to update the tests and/or create a test case but the onInfo tests are not clear to me:

  • 'browser_dump' doesn't seem to be a valid event
  • I'm not sure whether the behavior of the tests is really expected or just works by chance.

So I would be happy to get feedback from you before writing a test case.

describe('onInfo',()=>{
beforeEach(()=>{
browser=newBrowser('fake-id','full name',collection,emitter,socket)
})
it('should emit "browser_log"',()=>{
constspy=sinon.spy()
emitter.on('browser_log',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo({log: 'something',type: 'info'})
expect(spy).to.have.been.calledWith(browser,'something','info')
})
it('should emit "browser_info"',()=>{
constspy=sinon.spy()
constinfoData={}
emitter.on('browser_info',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo(infoData)
expect(spy).to.have.been.calledWith(browser,infoData)
})
it('should ignore if browser not executing',()=>{
constspy=sinon.spy()
emitter.on('browser_dump',spy)
browser.state=Browser.STATE_CONNECTED
browser.onInfo({dump: 'something'})
browser.onInfo({total: 20})
expect(browser.lastResult.total).to.equal(0)
expect(spy).not.to.have.been.called
})
})

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.
@johnjbarton

Copy link
Copy Markdown
Contributor
  • 'browser_dump' doesn't seem to be a valid event

I guess the test is attempting to cover:
https://github.com/karma-runner/karma/blob/master/lib/browser.js#L63

However it tests something "not happening" and many things do not happen when code is changed. Maybe the event was originally browser_dump and was renamed, but the test was not corrected. Please correct it if you can.

Comment threadlib/browser.js Outdated
if (helper.isDefined(info.log)) {
this.emitter.emit('browser_log', this, info.log, info.type)
} else if (helper.isDefined(info.total)) {
this.lastResult.total = info.total

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.

If you guard the update to results with state EXECUTING then the tests will pass. You can add a similar test with mock state EXECUTING to verify the change.

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.

In order to fix the test should ignore if browser not executing I would suggest to wrap all those if-clauses with a check for state EXECUTING.
Should this.refreshNoActivityTimeout() be still called then?

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 think we should log events in any state, they could be error messages for corner cases. So remove the line in the test that checks the .dump path.

The this.refreshNoActivityTimeout() should always be called, it signals that the browser is still on the line.

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.

Makes sense. I've pushed my changes.

@johnjbarton

Copy link
Copy Markdown
Contributor

Thanks!

@johnjbarton
johnjbarton merged commit d5df723 into karma-runner:masterFeb 13, 2019
@matz3

Copy link
Copy Markdown
ContributorAuthor

Thanks for the quick handling 👍

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.

2 participants

@matz3@johnjbarton
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} 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

fix(browser): allow updating total specs count - #3264

Merged
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count
Feb 13, 2019
Merged

fix(browser): allow updating total specs count#3264
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count

Conversation

@matz3

@matz3matz3 commented Feb 13, 2019

Copy link
Copy Markdown
Contributor

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.

Regarding tests
I wanted to update the tests and/or create a test case but the onInfo tests are not clear to me:

  • 'browser_dump' doesn't seem to be a valid event
  • I'm not sure whether the behavior of the tests is really expected or just works by chance.

So I would be happy to get feedback from you before writing a test case.

describe('onInfo',()=>{
beforeEach(()=>{
browser=newBrowser('fake-id','full name',collection,emitter,socket)
})
it('should emit "browser_log"',()=>{
constspy=sinon.spy()
emitter.on('browser_log',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo({log: 'something',type: 'info'})
expect(spy).to.have.been.calledWith(browser,'something','info')
})
it('should emit "browser_info"',()=>{
constspy=sinon.spy()
constinfoData={}
emitter.on('browser_info',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo(infoData)
expect(spy).to.have.been.calledWith(browser,infoData)
})
it('should ignore if browser not executing',()=>{
constspy=sinon.spy()
emitter.on('browser_dump',spy)
browser.state=Browser.STATE_CONNECTED
browser.onInfo({dump: 'something'})
browser.onInfo({total: 20})
expect(browser.lastResult.total).to.equal(0)
expect(spy).not.to.have.been.called
})
})

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.
@johnjbarton

Copy link
Copy Markdown
Contributor
  • 'browser_dump' doesn't seem to be a valid event

I guess the test is attempting to cover:
https://github.com/karma-runner/karma/blob/master/lib/browser.js#L63

However it tests something "not happening" and many things do not happen when code is changed. Maybe the event was originally browser_dump and was renamed, but the test was not corrected. Please correct it if you can.

Comment threadlib/browser.js Outdated
if (helper.isDefined(info.log)) {
this.emitter.emit('browser_log', this, info.log, info.type)
} else if (helper.isDefined(info.total)) {
this.lastResult.total = info.total

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.

If you guard the update to results with state EXECUTING then the tests will pass. You can add a similar test with mock state EXECUTING to verify the change.

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.

In order to fix the test should ignore if browser not executing I would suggest to wrap all those if-clauses with a check for state EXECUTING.
Should this.refreshNoActivityTimeout() be still called then?

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 think we should log events in any state, they could be error messages for corner cases. So remove the line in the test that checks the .dump path.

The this.refreshNoActivityTimeout() should always be called, it signals that the browser is still on the line.

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.

Makes sense. I've pushed my changes.

@johnjbarton

Copy link
Copy Markdown
Contributor

Thanks!

@johnjbarton
johnjbarton merged commit d5df723 into karma-runner:masterFeb 13, 2019
@matz3

Copy link
Copy Markdown
ContributorAuthor

Thanks for the quick handling 👍

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.

2 participants

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

fix(browser): allow updating total specs count - #3264

Merged
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count
Feb 13, 2019
Merged

fix(browser): allow updating total specs count#3264
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count

Conversation

@matz3

@matz3matz3 commented Feb 13, 2019

Copy link
Copy Markdown
Contributor

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.

Regarding tests
I wanted to update the tests and/or create a test case but the onInfo tests are not clear to me:

  • 'browser_dump' doesn't seem to be a valid event
  • I'm not sure whether the behavior of the tests is really expected or just works by chance.

So I would be happy to get feedback from you before writing a test case.

describe('onInfo',()=>{
beforeEach(()=>{
browser=newBrowser('fake-id','full name',collection,emitter,socket)
})
it('should emit "browser_log"',()=>{
constspy=sinon.spy()
emitter.on('browser_log',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo({log: 'something',type: 'info'})
expect(spy).to.have.been.calledWith(browser,'something','info')
})
it('should emit "browser_info"',()=>{
constspy=sinon.spy()
constinfoData={}
emitter.on('browser_info',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo(infoData)
expect(spy).to.have.been.calledWith(browser,infoData)
})
it('should ignore if browser not executing',()=>{
constspy=sinon.spy()
emitter.on('browser_dump',spy)
browser.state=Browser.STATE_CONNECTED
browser.onInfo({dump: 'something'})
browser.onInfo({total: 20})
expect(browser.lastResult.total).to.equal(0)
expect(spy).not.to.have.been.called
})
})

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.
@johnjbarton

Copy link
Copy Markdown
Contributor
  • 'browser_dump' doesn't seem to be a valid event

I guess the test is attempting to cover:
https://github.com/karma-runner/karma/blob/master/lib/browser.js#L63

However it tests something "not happening" and many things do not happen when code is changed. Maybe the event was originally browser_dump and was renamed, but the test was not corrected. Please correct it if you can.

Comment threadlib/browser.js Outdated
if (helper.isDefined(info.log)) {
this.emitter.emit('browser_log', this, info.log, info.type)
} else if (helper.isDefined(info.total)) {
this.lastResult.total = info.total

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.

If you guard the update to results with state EXECUTING then the tests will pass. You can add a similar test with mock state EXECUTING to verify the change.

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.

In order to fix the test should ignore if browser not executing I would suggest to wrap all those if-clauses with a check for state EXECUTING.
Should this.refreshNoActivityTimeout() be still called then?

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 think we should log events in any state, they could be error messages for corner cases. So remove the line in the test that checks the .dump path.

The this.refreshNoActivityTimeout() should always be called, it signals that the browser is still on the line.

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.

Makes sense. I've pushed my changes.

@johnjbarton

Copy link
Copy Markdown
Contributor

Thanks!

@johnjbarton
johnjbarton merged commit d5df723 into karma-runner:masterFeb 13, 2019
@matz3

Copy link
Copy Markdown
ContributorAuthor

Thanks for the quick handling 👍

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.

2 participants

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

fix(browser): allow updating total specs count - #3264

Merged
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count
Feb 13, 2019
Merged

fix(browser): allow updating total specs count#3264
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count

Conversation

@matz3

@matz3matz3 commented Feb 13, 2019

Copy link
Copy Markdown
Contributor

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.

Regarding tests
I wanted to update the tests and/or create a test case but the onInfo tests are not clear to me:

  • 'browser_dump' doesn't seem to be a valid event
  • I'm not sure whether the behavior of the tests is really expected or just works by chance.

So I would be happy to get feedback from you before writing a test case.

describe('onInfo',()=>{
beforeEach(()=>{
browser=newBrowser('fake-id','full name',collection,emitter,socket)
})
it('should emit "browser_log"',()=>{
constspy=sinon.spy()
emitter.on('browser_log',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo({log: 'something',type: 'info'})
expect(spy).to.have.been.calledWith(browser,'something','info')
})
it('should emit "browser_info"',()=>{
constspy=sinon.spy()
constinfoData={}
emitter.on('browser_info',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo(infoData)
expect(spy).to.have.been.calledWith(browser,infoData)
})
it('should ignore if browser not executing',()=>{
constspy=sinon.spy()
emitter.on('browser_dump',spy)
browser.state=Browser.STATE_CONNECTED
browser.onInfo({dump: 'something'})
browser.onInfo({total: 20})
expect(browser.lastResult.total).to.equal(0)
expect(spy).not.to.have.been.called
})
})

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.
@johnjbarton

Copy link
Copy Markdown
Contributor
  • 'browser_dump' doesn't seem to be a valid event

I guess the test is attempting to cover:
https://github.com/karma-runner/karma/blob/master/lib/browser.js#L63

However it tests something "not happening" and many things do not happen when code is changed. Maybe the event was originally browser_dump and was renamed, but the test was not corrected. Please correct it if you can.

Comment threadlib/browser.js Outdated
if (helper.isDefined(info.log)) {
this.emitter.emit('browser_log', this, info.log, info.type)
} else if (helper.isDefined(info.total)) {
this.lastResult.total = info.total

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.

If you guard the update to results with state EXECUTING then the tests will pass. You can add a similar test with mock state EXECUTING to verify the change.

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.

In order to fix the test should ignore if browser not executing I would suggest to wrap all those if-clauses with a check for state EXECUTING.
Should this.refreshNoActivityTimeout() be still called then?

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 think we should log events in any state, they could be error messages for corner cases. So remove the line in the test that checks the .dump path.

The this.refreshNoActivityTimeout() should always be called, it signals that the browser is still on the line.

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.

Makes sense. I've pushed my changes.

@johnjbarton

Copy link
Copy Markdown
Contributor

Thanks!

@johnjbarton
johnjbarton merged commit d5df723 into karma-runner:masterFeb 13, 2019
@matz3

Copy link
Copy Markdown
ContributorAuthor

Thanks for the quick handling 👍

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.

2 participants

@matz3@johnjbarton
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } 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

fix(browser): allow updating total specs count - #3264

Merged
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count
Feb 13, 2019
Merged

fix(browser): allow updating total specs count#3264
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count

Conversation

@matz3

@matz3matz3 commented Feb 13, 2019

Copy link
Copy Markdown
Contributor

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.

Regarding tests
I wanted to update the tests and/or create a test case but the onInfo tests are not clear to me:

  • 'browser_dump' doesn't seem to be a valid event
  • I'm not sure whether the behavior of the tests is really expected or just works by chance.

So I would be happy to get feedback from you before writing a test case.

describe('onInfo',()=>{
beforeEach(()=>{
browser=newBrowser('fake-id','full name',collection,emitter,socket)
})
it('should emit "browser_log"',()=>{
constspy=sinon.spy()
emitter.on('browser_log',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo({log: 'something',type: 'info'})
expect(spy).to.have.been.calledWith(browser,'something','info')
})
it('should emit "browser_info"',()=>{
constspy=sinon.spy()
constinfoData={}
emitter.on('browser_info',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo(infoData)
expect(spy).to.have.been.calledWith(browser,infoData)
})
it('should ignore if browser not executing',()=>{
constspy=sinon.spy()
emitter.on('browser_dump',spy)
browser.state=Browser.STATE_CONNECTED
browser.onInfo({dump: 'something'})
browser.onInfo({total: 20})
expect(browser.lastResult.total).to.equal(0)
expect(spy).not.to.have.been.called
})
})

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.
@johnjbarton

Copy link
Copy Markdown
Contributor
  • 'browser_dump' doesn't seem to be a valid event

I guess the test is attempting to cover:
https://github.com/karma-runner/karma/blob/master/lib/browser.js#L63

However it tests something "not happening" and many things do not happen when code is changed. Maybe the event was originally browser_dump and was renamed, but the test was not corrected. Please correct it if you can.

Comment threadlib/browser.js Outdated
if (helper.isDefined(info.log)) {
this.emitter.emit('browser_log', this, info.log, info.type)
} else if (helper.isDefined(info.total)) {
this.lastResult.total = info.total

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.

If you guard the update to results with state EXECUTING then the tests will pass. You can add a similar test with mock state EXECUTING to verify the change.

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.

In order to fix the test should ignore if browser not executing I would suggest to wrap all those if-clauses with a check for state EXECUTING.
Should this.refreshNoActivityTimeout() be still called then?

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 think we should log events in any state, they could be error messages for corner cases. So remove the line in the test that checks the .dump path.

The this.refreshNoActivityTimeout() should always be called, it signals that the browser is still on the line.

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.

Makes sense. I've pushed my changes.

@johnjbarton

Copy link
Copy Markdown
Contributor

Thanks!

@johnjbarton
johnjbarton merged commit d5df723 into karma-runner:masterFeb 13, 2019
@matz3

Copy link
Copy Markdown
ContributorAuthor

Thanks for the quick handling 👍

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.

2 participants

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

fix(browser): allow updating total specs count - #3264

Merged
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count
Feb 13, 2019
Merged

fix(browser): allow updating total specs count#3264
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count

Conversation

@matz3

@matz3matz3 commented Feb 13, 2019

Copy link
Copy Markdown
Contributor

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.

Regarding tests
I wanted to update the tests and/or create a test case but the onInfo tests are not clear to me:

  • 'browser_dump' doesn't seem to be a valid event
  • I'm not sure whether the behavior of the tests is really expected or just works by chance.

So I would be happy to get feedback from you before writing a test case.

describe('onInfo',()=>{
beforeEach(()=>{
browser=newBrowser('fake-id','full name',collection,emitter,socket)
})
it('should emit "browser_log"',()=>{
constspy=sinon.spy()
emitter.on('browser_log',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo({log: 'something',type: 'info'})
expect(spy).to.have.been.calledWith(browser,'something','info')
})
it('should emit "browser_info"',()=>{
constspy=sinon.spy()
constinfoData={}
emitter.on('browser_info',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo(infoData)
expect(spy).to.have.been.calledWith(browser,infoData)
})
it('should ignore if browser not executing',()=>{
constspy=sinon.spy()
emitter.on('browser_dump',spy)
browser.state=Browser.STATE_CONNECTED
browser.onInfo({dump: 'something'})
browser.onInfo({total: 20})
expect(browser.lastResult.total).to.equal(0)
expect(spy).not.to.have.been.called
})
})

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.
@johnjbarton

Copy link
Copy Markdown
Contributor
  • 'browser_dump' doesn't seem to be a valid event

I guess the test is attempting to cover:
https://github.com/karma-runner/karma/blob/master/lib/browser.js#L63

However it tests something "not happening" and many things do not happen when code is changed. Maybe the event was originally browser_dump and was renamed, but the test was not corrected. Please correct it if you can.

Comment threadlib/browser.js Outdated
if (helper.isDefined(info.log)) {
this.emitter.emit('browser_log', this, info.log, info.type)
} else if (helper.isDefined(info.total)) {
this.lastResult.total = info.total

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.

If you guard the update to results with state EXECUTING then the tests will pass. You can add a similar test with mock state EXECUTING to verify the change.

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.

In order to fix the test should ignore if browser not executing I would suggest to wrap all those if-clauses with a check for state EXECUTING.
Should this.refreshNoActivityTimeout() be still called then?

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 think we should log events in any state, they could be error messages for corner cases. So remove the line in the test that checks the .dump path.

The this.refreshNoActivityTimeout() should always be called, it signals that the browser is still on the line.

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.

Makes sense. I've pushed my changes.

@johnjbarton

Copy link
Copy Markdown
Contributor

Thanks!

@johnjbarton
johnjbarton merged commit d5df723 into karma-runner:masterFeb 13, 2019
@matz3

Copy link
Copy Markdown
ContributorAuthor

Thanks for the quick handling 👍

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.

2 participants

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

fix(browser): allow updating total specs count - #3264

Merged
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count
Feb 13, 2019
Merged

fix(browser): allow updating total specs count#3264
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count

Conversation

@matz3

@matz3matz3 commented Feb 13, 2019

Copy link
Copy Markdown
Contributor

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.

Regarding tests
I wanted to update the tests and/or create a test case but the onInfo tests are not clear to me:

  • 'browser_dump' doesn't seem to be a valid event
  • I'm not sure whether the behavior of the tests is really expected or just works by chance.

So I would be happy to get feedback from you before writing a test case.

describe('onInfo',()=>{
beforeEach(()=>{
browser=newBrowser('fake-id','full name',collection,emitter,socket)
})
it('should emit "browser_log"',()=>{
constspy=sinon.spy()
emitter.on('browser_log',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo({log: 'something',type: 'info'})
expect(spy).to.have.been.calledWith(browser,'something','info')
})
it('should emit "browser_info"',()=>{
constspy=sinon.spy()
constinfoData={}
emitter.on('browser_info',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo(infoData)
expect(spy).to.have.been.calledWith(browser,infoData)
})
it('should ignore if browser not executing',()=>{
constspy=sinon.spy()
emitter.on('browser_dump',spy)
browser.state=Browser.STATE_CONNECTED
browser.onInfo({dump: 'something'})
browser.onInfo({total: 20})
expect(browser.lastResult.total).to.equal(0)
expect(spy).not.to.have.been.called
})
})

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.
@johnjbarton

Copy link
Copy Markdown
Contributor
  • 'browser_dump' doesn't seem to be a valid event

I guess the test is attempting to cover:
https://github.com/karma-runner/karma/blob/master/lib/browser.js#L63

However it tests something "not happening" and many things do not happen when code is changed. Maybe the event was originally browser_dump and was renamed, but the test was not corrected. Please correct it if you can.

Comment threadlib/browser.js Outdated
if (helper.isDefined(info.log)) {
this.emitter.emit('browser_log', this, info.log, info.type)
} else if (helper.isDefined(info.total)) {
this.lastResult.total = info.total

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.

If you guard the update to results with state EXECUTING then the tests will pass. You can add a similar test with mock state EXECUTING to verify the change.

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.

In order to fix the test should ignore if browser not executing I would suggest to wrap all those if-clauses with a check for state EXECUTING.
Should this.refreshNoActivityTimeout() be still called then?

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 think we should log events in any state, they could be error messages for corner cases. So remove the line in the test that checks the .dump path.

The this.refreshNoActivityTimeout() should always be called, it signals that the browser is still on the line.

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.

Makes sense. I've pushed my changes.

@johnjbarton

Copy link
Copy Markdown
Contributor

Thanks!

@johnjbarton
johnjbarton merged commit d5df723 into karma-runner:masterFeb 13, 2019
@matz3

Copy link
Copy Markdown
ContributorAuthor

Thanks for the quick handling 👍

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.

2 participants

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

fix(browser): allow updating total specs count - #3264

Merged
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count
Feb 13, 2019
Merged

fix(browser): allow updating total specs count#3264
johnjbarton merged 3 commits into
karma-runner:masterfrom
matz3:fix-update-total-spec-count

Conversation

@matz3

@matz3matz3 commented Feb 13, 2019

Copy link
Copy Markdown
Contributor

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.

Regarding tests
I wanted to update the tests and/or create a test case but the onInfo tests are not clear to me:

  • 'browser_dump' doesn't seem to be a valid event
  • I'm not sure whether the behavior of the tests is really expected or just works by chance.

So I would be happy to get feedback from you before writing a test case.

describe('onInfo',()=>{
beforeEach(()=>{
browser=newBrowser('fake-id','full name',collection,emitter,socket)
})
it('should emit "browser_log"',()=>{
constspy=sinon.spy()
emitter.on('browser_log',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo({log: 'something',type: 'info'})
expect(spy).to.have.been.calledWith(browser,'something','info')
})
it('should emit "browser_info"',()=>{
constspy=sinon.spy()
constinfoData={}
emitter.on('browser_info',spy)
browser.state=Browser.STATE_EXECUTING
browser.onInfo(infoData)
expect(spy).to.have.been.calledWith(browser,infoData)
})
it('should ignore if browser not executing',()=>{
constspy=sinon.spy()
emitter.on('browser_dump',spy)
browser.state=Browser.STATE_CONNECTED
browser.onInfo({dump: 'something'})
browser.onInfo({total: 20})
expect(browser.lastResult.total).to.equal(0)
expect(spy).not.to.have.been.called
})
})

This change allows providing the total specs count after the tests have
been started.
The count will be updated in case it has been provided already.
This can be uselful for some adapters where the total specs count can
not be determined before starting the first test.
@johnjbarton

Copy link
Copy Markdown
Contributor
  • 'browser_dump' doesn't seem to be a valid event

I guess the test is attempting to cover:
https://github.com/karma-runner/karma/blob/master/lib/browser.js#L63

However it tests something "not happening" and many things do not happen when code is changed. Maybe the event was originally browser_dump and was renamed, but the test was not corrected. Please correct it if you can.

Comment threadlib/browser.js Outdated
if (helper.isDefined(info.log)) {
this.emitter.emit('browser_log', this, info.log, info.type)
} else if (helper.isDefined(info.total)) {
this.lastResult.total = info.total

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.

If you guard the update to results with state EXECUTING then the tests will pass. You can add a similar test with mock state EXECUTING to verify the change.

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.

In order to fix the test should ignore if browser not executing I would suggest to wrap all those if-clauses with a check for state EXECUTING.
Should this.refreshNoActivityTimeout() be still called then?

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 think we should log events in any state, they could be error messages for corner cases. So remove the line in the test that checks the .dump path.

The this.refreshNoActivityTimeout() should always be called, it signals that the browser is still on the line.

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.

Makes sense. I've pushed my changes.

@johnjbarton

Copy link
Copy Markdown
Contributor

Thanks!

@johnjbarton
johnjbarton merged commit d5df723 into karma-runner:masterFeb 13, 2019
@matz3

Copy link
Copy Markdown
ContributorAuthor

Thanks for the quick handling 👍

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.

2 participants

@matz3@johnjbarton