René's URL Explorer Experiment


Title: test_runner: support custom message for expectFailure by Han5991 · Pull Request #61563 · nodejs/node · GitHub

Open Graph Title: test_runner: support custom message for expectFailure by Han5991 · Pull Request #61563 · nodejs/node

X Title: test_runner: support custom message for expectFailure by Han5991 · Pull Request #61563 · nodejs/node

Description: Summary This PR enhances the expectFailure option in the test runner to accept different types of values, enabling both custom failure labels and robust error validation. This implementation is referenced from and inspired by nodejs/test-runner#10. Changes The expectFailure option now supports the following types: String: Treated as a failure label (reason). test('bug', { expectFailure: 'Investigating' }, ...); RegExp / Function / Error Class: Treated as a matcher to validate the thrown error (similar to assert.throws). test('regex', { expectFailure: /error message/ }, ...); test('class', { expectFailure: RangeError }, ...); Object: If it contains label or match properties, it's treated as a configuration object. test('config', { expectFailure: { label: 'Known issue', match: /specific error/ } }, ...); Otherwise, it's treated as an object matcher (properties matching). Inheritance: Tests now inherit expectFailure from their parent suite. This allows marking an entire suite as expected to fail. test('suite', { expectFailure: true }, async (t) => { await t.test('subtest', () => { throw new Error(); }); // Passes (expected failure) }); References Based on concepts from: nodejs/test-runner#10 Resolves: #61570

Open Graph Description: Summary This PR enhances the expectFailure option in the test runner to accept different types of values, enabling both custom failure labels and robust error validation. This implementation is ref...

X Description: Summary This PR enhances the expectFailure option in the test runner to accept different types of values, enabling both custom failure labels and robust error validation. This implementation is ref...

Opengraph URL: https://github.com/nodejs/node/pull/61563

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:5f97f752-e38a-5d94-7477-23e853521c07
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id8994:4F057:23D230:2FE10D:6A4C2650
html-safe-nonce066099880cbe1d1cfba41a365bfcfd99ae0087557a54a687ec329ccdb42ed950
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4OTk0OjRGMDU3OjIzRDIzMDoyRkUxMEQ6NkE0QzI2NTAiLCJ2aXNpdG9yX2lkIjoiNjU1NTc5NTEyODQyOTg0ODE0NCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmacc5e12c0bf1b53ed6a644f750f733eb83190d02d73a1ad38ec365f6d7fd168f40
hovercard-subject-tagpull_request:3219151169
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/nodejs/node/pull/61563/files
twitter:imagehttps://avatars.githubusercontent.com/u/73056306?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/73056306?s=400&v=4
og:image:altSummary This PR enhances the expectFailure option in the test runner to accept different types of values, enabling both custom failure labels and robust error validation. This implementation is ref...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None1b6b16d04026f131a36d57e3b01d0f4d26a51800edf48bf5ed0256e0ac905511
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/nodejs/node git https://github.com/nodejs/node.git
octolytics-dimension-user_id9950313
octolytics-dimension-user_loginnodejs
octolytics-dimension-repository_id27193779
octolytics-dimension-repository_nwonodejs/node
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id27193779
octolytics-dimension-repository_network_root_nwonodejs/node
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release9ee13484b32cf23e15fde191da4c9aa47d41201c
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/nodejs/node/pull/61563/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fpull%2F61563%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fpull%2F61563%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=nodejs%2Fnode
Reloadhttps://github.com/nodejs/node/pull/61563/files
Reloadhttps://github.com/nodejs/node/pull/61563/files
Reloadhttps://github.com/nodejs/node/pull/61563/files
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
nodejs https://github.com/nodejs
nodehttps://github.com/nodejs/node
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
Notifications https://github.com/login?return_to=%2Fnodejs%2Fnode
Fork 36k https://github.com/login?return_to=%2Fnodejs%2Fnode
Star 118k https://github.com/login?return_to=%2Fnodejs%2Fnode
Code https://github.com/nodejs/node
Issues 1.4k https://github.com/nodejs/node/issues
Pull requests 967 https://github.com/nodejs/node/pulls
Actions https://github.com/nodejs/node/actions
Projects https://github.com/nodejs/node/projects
Security and quality 0 https://github.com/nodejs/node/security
Insights https://github.com/nodejs/node/pulse
Code https://github.com/nodejs/node
Issues https://github.com/nodejs/node/issues
Pull requests https://github.com/nodejs/node/pulls
Actions https://github.com/nodejs/node/actions
Projects https://github.com/nodejs/node/projects
Security and quality https://github.com/nodejs/node/security
Insights https://github.com/nodejs/node/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fnodejs%2Fnode%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fnodejs%2Fnode%2Fissues%2Fnew%2Fchoose
nodejs-github-bothttps://github.com/nodejs-github-bot
nodejs:mainhttps://github.com/nodejs/node/tree/main
Han5991:test-runner/support-getxfail-messagehttps://github.com/Han5991/node/tree/test-runner/support-getxfail-message
Conversation 102 https://github.com/nodejs/node/pull/61563
Commits 2 https://github.com/nodejs/node/pull/61563/commits
Checks 58 https://github.com/nodejs/node/pull/61563/checks
Files changed https://github.com/nodejs/node/pull/61563/files
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
test_runner: support custom message for expectFailure https://github.com/nodejs/node/pull/61563/files#top
Show all changes 2 commits https://github.com/nodejs/node/pull/61563/files
429ac6e test_runner: expose expectFailure message Han5991 Feb 17, 2026 https://github.com/nodejs/node/pull/61563/commits/429ac6e81e355b730cf8d64600596fb61eb7655f
4c7bb37 test_runner: fix empty object test assert logic Han5991 Feb 24, 2026 https://github.com/nodejs/node/pull/61563/commits/4c7bb3736e373532e3e7017ea88889eb3a09fcd1
Clear filters https://github.com/nodejs/node/pull/61563/files
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
test.md https://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
tap.js https://github.com/nodejs/node/pull/61563/files#diff-b4279cee3f82e1c84c385df5a5c2df4a782a872cf49a719ce82c9197337e618c
test.js https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
test-runner-expect-error-but-pass.js https://github.com/nodejs/node/pull/61563/files#diff-991b62ddd10a22cd737cdaa7dc33c11107c87b526b92d6e36b4f256881284986
test-runner-xfail.js https://github.com/nodejs/node/pull/61563/files#diff-06a2f95693d95110837dde44a93615eb5832e19386f69d00417101d8adef166f
doc/api/test.mdhttps://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
View file https://github.com/Han5991/node/blob/4c7bb3736e373532e3e7017ea88889eb3a09fcd1/doc/api/test.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/61563/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
https://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
https://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
https://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
https://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
https://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
https://github.com/nodejs/node/pull/61563/files#diff-7ef19622f4f1c831ca0e6ed0edc03cb517f16969f1f1b0972a117bd3fa65c44a
lib/internal/test_runner/reporter/tap.jshttps://github.com/nodejs/node/pull/61563/files#diff-b4279cee3f82e1c84c385df5a5c2df4a782a872cf49a719ce82c9197337e618c
View file https://github.com/Han5991/node/blob/4c7bb3736e373532e3e7017ea88889eb3a09fcd1/lib/internal/test_runner/reporter/tap.js
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/61563/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/61563/files#diff-b4279cee3f82e1c84c385df5a5c2df4a782a872cf49a719ce82c9197337e618c
https://github.com/nodejs/node/pull/61563/files#diff-b4279cee3f82e1c84c385df5a5c2df4a782a872cf49a719ce82c9197337e618c
lib/internal/test_runner/test.jshttps://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
View file https://github.com/Han5991/node/blob/4c7bb3736e373532e3e7017ea88889eb3a09fcd1/lib/internal/test_runner/test.js
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/61563/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
JakobJingleheimerhttps://github.com/JakobJingleheimer
Feb 17, 2026https://github.com/nodejs/node/pull/61563/files#r2815630471
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
Han5991https://github.com/Han5991
Feb 17, 2026https://github.com/nodejs/node/pull/61563/files#r2815755827
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
JakobJingleheimerhttps://github.com/JakobJingleheimer
Feb 17, 2026https://github.com/nodejs/node/pull/61563/files#r2815770091
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
vassudanaguntahttps://github.com/vassudanagunta
Feb 17, 2026https://github.com/nodejs/node/pull/61563/files#r2816731854
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
#61563 (review)https://github.com/nodejs/node/pull/61563#pullrequestreview-3813501699
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
JakobJingleheimerhttps://github.com/JakobJingleheimer
Feb 24, 2026https://github.com/nodejs/node/pull/61563/files#r2849591705
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
https://github.com/nodejs/node/pull/61563/files#diff-42583d1c2fb89ce93a6c2922840a13f8026995468ffe8b0ac8319d1749de6acb
test/parallel/test-runner-expect-error-but-pass.jshttps://github.com/nodejs/node/pull/61563/files#diff-991b62ddd10a22cd737cdaa7dc33c11107c87b526b92d6e36b4f256881284986
View file https://github.com/Han5991/node/blob/4c7bb3736e373532e3e7017ea88889eb3a09fcd1/test/parallel/test-runner-expect-error-but-pass.js
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/61563/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/61563/files#diff-991b62ddd10a22cd737cdaa7dc33c11107c87b526b92d6e36b4f256881284986
https://github.com/nodejs/node/pull/61563/files#diff-991b62ddd10a22cd737cdaa7dc33c11107c87b526b92d6e36b4f256881284986
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
Please reload this pagehttps://github.com/nodejs/node/pull/61563/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.