• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umputun / remark42
85%
master: 85%

Build:
Build:
LAST BUILD BRANCH: jest-thin-stacked
DEFAULT BRANCH: master
Repo Added 07 Feb 2020 09:18PM UTC
Token eqCnozHBf54UGZ8kokrZbOvkEkhZY23aj regen
Build 2017 Last
Files 54
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH jest-thin-stacked
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • 32/code-colors-styles
  • 965-fix-error-on-restricted-words
  • Ksinia/master
  • add-api-sdk
  • add-cssnano
  • add-module-type
  • add-security-headers
  • admin-edit
  • admin_email_notifications
  • ak/cleanup-comment-form
  • ak/compose-button-styles
  • ak/raw-content-styles
  • ak/update-node
  • akellbl4/editorconfig
  • aliksend/reduce-number-of-symbols-in-tg-message
  • anon-names
  • autofill-email-for-subscription
  • battle-net-oauth2
  • bem-to-css-modules-batch1
  • blackfriday
  • bluemonday-bump
  • bump-auth-oauth-redirect-fix
  • bump-deps
  • bump_ci_go_version
  • bump_lcw
  • bump_modules
  • bump_tollbooth
  • chore-deps-bump-go-modules
  • chore/bump-go-modules
  • chore/frontend-toolchain
  • chore/single-frontend-manifest
  • chore/site-hugo
  • chore/static-assets-to-backend
  • chore/tighten-build-context
  • chore/update-go-deps-2026-04
  • chore/update-preact
  • ci-workflows
  • ci/go-1.25.13
  • code-colors
  • code_cleanup
  • commento-import
  • configurable-microsoft-tenant
  • copilot/sub-pr-1995
  • dependabot/github_actions/github-actions-updates-4c2bda7e8b
  • dependabot/github_actions/github-actions-updates-5f7deffeb7
  • dependabot/github_actions/github-actions-updates-8173ff9682
  • dependabot/github_actions/github-actions-updates-da97c4d56b
  • dependabot/go_modules/backend/_example/memory_store/github.com/go-chi/chi/v5-5.2.2
  • dependabot/go_modules/backend/_example/memory_store/golang.org/x/crypto-0.45.0
  • dependabot/go_modules/backend/_example/memory_store/golang.org/x/image-0.38.0
  • dependabot/go_modules/backend/_example/memory_store/golang.org/x/image-0.5.0
  • dependabot/go_modules/backend/_example/memory_store/golang.org/x/net-0.38.0
  • dependabot/go_modules/backend/_example/memory_store/golang.org/x/net-0.7.0
  • dependabot/go_modules/backend/github.com/golang-jwt/jwt/v5-5.2.2
  • dependabot/go_modules/backend/github.com/redis/go-redis/v9-9.7.3
  • dependabot/go_modules/backend/github.com/slack-go/slack-0.23.1
  • dependabot/go_modules/backend/go-modules-updates-3a2e2cb45c
  • dependabot/go_modules/backend/go-modules-updates-3d96251ff3
  • dependabot/go_modules/backend/go-modules-updates-47fdc5c9f4
  • dependabot/go_modules/backend/go-modules-updates-75c1c3f47e
  • dependabot/go_modules/backend/go-modules-updates-76e35b2467
  • dependabot/go_modules/backend/go-modules-updates-7b9ff8b7cd
  • dependabot/go_modules/backend/go-modules-updates-81f599025a
  • dependabot/go_modules/backend/go-modules-updates-e61953c257
  • dependabot/go_modules/backend/go-modules-updates-f692995c50
  • dependabot/go_modules/backend/golang.org/x/crypto-0.45.0
  • dependabot/go_modules/backend/golang.org/x/net-0.36.0
  • dependabot/go_modules/backend/google.golang.org/protobuf-1.33.0
  • dependabot/npm_and_yarn/frontend/apps/remark42/npm-modules-updates-33950cb83c
  • dependabot/npm_and_yarn/frontend/apps/remark42/npm-modules-updates-for-tests-da749204ba
  • dependabot/npm_and_yarn/frontend/e2e/npm-modules-updates-for-tests-32faa27b51
  • dependabot/npm_and_yarn/frontend/packages/api/npm-modules-updates-for-tests-f28c5bd690
  • dependabot/npm_and_yarn/frontend/playwright-1.55.1
  • dependabot/npm_and_yarn/frontend/turbo-2.9.14
  • dependabot/npm_and_yarn/frontend/vitest-4.1.0
  • dependabot/npm_and_yarn/site/braces-3.0.3
  • dependabot/npm_and_yarn/site/ejs-3.1.10
  • dependabot/npm_and_yarn/site/js-yaml-3.14.2
  • dependabot/npm_and_yarn/site/luxon-2.5.2
  • dependabot/npm_and_yarn/site/micromatch-4.0.8
  • dependabot/npm_and_yarn/site/nanoid-3.3.8
  • dependabot/npm_and_yarn/site/node-fetch-3.2.10
  • dependabot/npm_and_yarn/site/npm-modules-updates-for-tests-284cb22f28
  • dependabot/npm_and_yarn/site/npm-modules-updates-for-tests-87ff55c30d
  • dependabot/npm_and_yarn/site/ws-8.17.1
  • deps-bump
  • deps/auth-v2.1.5-avatar
  • deps/rest-v1.22.0
  • deps/update-backend
  • deps/update-latest
  • disqus-empty-username-bug
  • disqus-fix
  • distributed_cache
  • docker-native-arm64-runners
  • docker_bump
  • docs-audit-fixes
  • docs/edit-time-zero-behavior
  • docs/placeholder-1990
  • docs/preact-pin-note
  • docs/safari-measured
  • docs/telegram-group-notifications
  • dverhoturov/docker
  • dverhoturov/docker_ci_build
  • dverhoturov/privatePreview
  • dverhoturov/renew_image_on_load
  • dverhoturov/validate_image_before_post
  • e2e
  • e2e-coverage-gaps
  • e2e-go-coverage
  • e2e-reveal-timing
  • e2e-telegram-coverage
  • e2e-telegram-groundwork
  • editorconfig-double-quotes-yml
  • email-encode-subject
  • email-from-display-name
  • examples-ci-issue
  • fe-js-coverage
  • feat/custom-oauth2-provider
  • feat/e2e-go
  • feature/comment-approval
  • fix-admin-names
  • fix-deprecated-flags
  • fix-iframe-resize
  • fix-image-decompression-bomb
  • fix-image-proxy-xss-content-type-spoofing
  • fix-img-submit-import-stuck
  • fix-negative-comments-count
  • fix-securityheaders-teardown
  • fix-typo
  • fix/alter-comment-n1
  • fix/auth-send-jwt-header
  • fix/backend-test-flakiness
  • fix/ci-govulncheck
  • fix/ci-pr-triggers
  • fix/collapse-parse-guard-and-e2e-rerun
  • fix/compose-version
  • fix/cors-wildcard-credentials-optin
  • fix/deleteme-avatar-removal
  • fix/dependabot-coverage
  • fix/drop-armv7-golangci
  • fix/email-html-template
  • fix/embedded-web-remark-url
  • fix/example-mod-tidy-2152
  • fix/export-site-not-found-400
  • fix/flaky-consistent-count-test
  • fix/frontend-css-cleanup
  • fix/fsstore-cleanup-flake
  • fix/iframe-preloader-height-blink
  • fix/jwt-header-docs
  • fix/migrator-test-shared-reader
  • fix/notify-drop-tests-deterministic
  • fix/plan-r1-oauth-scope
  • fix/quick-fixes-1946-1991-1996
  • fix/review-findings
  • fix/security-ipv6-ssrf
  • fix/tree-limit-tests
  • fix/trusted-proxy-followup
  • fix/trusted-proxy-realip
  • fix/writeheader-renderjson-bug-1979
  • fix_error_wrap
  • fix_memory_store_tests_panic
  • fix_unclosed_body
  • frame-ancestors
  • frontend-infrastructure
  • full-text-search
  • generate-telegram-translations
  • github_golangci_lint
  • go-1.14
  • go-1.17
  • go-consistent
  • gocritic
  • golangci-lint-v2-migration
  • harden-deploy-permissions
  • hide-vote-iphash
  • image-rpc
  • image_interface_fixes
  • img_commit_on_start
  • img_fixes
  • img_route_verification
  • img_types
  • jest-thin-stacked
  • jwt-migration
  • lazy-image
  • links-rune
  • listen-address
  • master
  • migrate-to-testing-library
  • migrator-busy-race
  • mkdocs
  • move-email-templates-to-separate-files
  • move-subscribe-ui-elements
  • named-exports
  • new-auth
  • packages
  • paskal/CWE-918
  • paskal/allow_dash_in_email_siteid
  • paskal/allowed_domains_exact_match
  • paskal/allowed_hosts
  • paskal/apple
  • paskal/apple_bad_key_test
  • paskal/apple_frontend
  • paskal/aud_per_site
  • paskal/auth_fixes
  • paskal/better_info
  • paskal/borderless_qr
  • paskal/bump-ci
  • paskal/bump_actions
  • paskal/bump_auth
  • paskal/bump_chroma
  • paskal/bump_dependencies
  • paskal/bump_go_modules
  • paskal/bump_golangci_lint
  • paskal/bump_mockery
  • paskal/bump_modules
  • paskal/bump_tollbooth
  • paskal/chi_render
  • paskal/clarify_cache_for_frontend
  • paskal/clarify_commands
  • paskal/clarify_docs
  • paskal/clarify_email_notifications
  • paskal/clarify_notifications
  • paskal/clarify_password
  • paskal/clean_stream
  • paskal/clean_title_and_username
  • paskal/cleanup_images_on_delete
  • paskal/close_body
  • paskal/comment_validation
  • paskal/commento_url
  • paskal/comments_pagination
  • paskal/consistent_info
  • paskal/csp
  • paskal/data_race
  • paskal/datastore_info_combine
  • paskal/debug_verify
  • paskal/dependabot
  • paskal/deprecate_twitter
  • paskal/deprecated_notifications
  • paskal/deprecated_params
  • paskal/deprecation_update
  • paskal/dev_provider
  • paskal/disable_md_sanitize
  • paskal/discord_poc
  • paskal/doc_split
  • paskal/docker-compose
  • paskal/docker_labels
  • paskal/docs
  • paskal/docs_from_wiki
  • paskal/duplicate_types
  • paskal/easy_subscription
  • paskal/email
  • paskal/email_login_auth
  • paskal/email_subscription_post
  • paskal/err_fix
  • paskal/find_tests
  • paskal/fix_avatar_types
  • paskal/fix_backup_error
  • paskal/fix_commento_import
  • paskal/fix_docker
  • paskal/fix_double_close
  • paskal/fix_email_templates
  • paskal/fix_golangci_lint
  • paskal/fix_image_proxy
  • paskal/fix_img_src_CSP
  • paskal/fix_links
  • paskal/fix_log
  • paskal/fix_logout
  • paskal/fix_notify_deprecation
  • paskal/fix_refresh_tokens_cache
  • paskal/fix_telegram_auth
  • paskal/fix_telegram_cli
  • paskal/fix_telegram_escape
  • paskal/fix_telegram_format
  • paskal/fix_ticker
  • paskal/fix_timeout
  • paskal/fix_variable
  • paskal/fix_webhook_json
  • paskal/generic_fixes
  • paskal/get_rid_of_dockerhub
  • paskal/go_embed
  • paskal/go_embed_templates
  • paskal/golangci-lint-update
  • paskal/golangci_lint
  • paskal/golangci_lint_v2
  • paskal/golangcilint_bump
  • paskal/image_proxy_blacklist
  • paskal/improve_docker_build
  • paskal/improve_get_user
  • paskal/improve_server_test
  • paskal/improve_telegram_flow
  • paskal/improve_telegram_notify
  • paskal/improve_tests
  • paskal/increase_timeout
  • paskal/jwt_v5
  • paskal/lcw_v2
  • paskal/md_ci
  • paskal/min_comment_size
  • paskal/modules_update
  • paskal/moq
  • paskal/multiple-admin-emails
  • paskal/new_errors
  • paskal/new_telegram_key
  • paskal/no_getstarted
  • paskal/no_mod_vendor
  • paskal/no_path
  • paskal/notifications_rework
  • paskal/notify
  • paskal/notify-drops-tail
  • paskal/notify_drops_test
  • paskal/notify_improvements
  • paskal/notify_migration
  • paskal/optimise_images
  • paskal/pagination_fixes
  • paskal/params
  • paskal/pngcrush
  • paskal/privatePreview
  • paskal/proper_site_id
  • paskal/raw_quotes
  • paskal/readonly_find_test
  • paskal/recursive_email_notifications
  • paskal/remove-deprecated-func
  • paskal/remove_common_shared_secret
  • paskal/remove_deprecated_param
  • paskal/remove_put
  • paskal/renew_cache_on_delete
  • paskal/rpc_panic
  • paskal/secret-clarify
  • paskal/send_jwt_header
  • paskal/simlify_boltdb_info
  • paskal/simplify_admin_emails
  • paskal/simplify_extract_pictures
  • paskal/siteid_dot
  • paskal/small_improvements
  • paskal/telegram-update
  • paskal/telegram_auth
  • paskal/telegram_channel
  • paskal/telegram_notifications
  • paskal/telegram_notify
  • paskal/telegram_notify_clarity
  • paskal/telegram_notify_params
  • paskal/test_user_replies
  • paskal/tests
  • paskal/tests_cleanup
  • paskal/tg_qr
  • paskal/token_instructions
  • paskal/twitter_blockquote_class
  • paskal/typos
  • paskal/update-go-modules
  • paskal/update-gopkgz
  • paskal/update-images
  • paskal/update_discreet_variables
  • paskal/update_doc
  • paskal/update_dockerfiles
  • paskal/update_go
  • paskal/update_modules
  • paskal/user_detail_telegram
  • patch-1
  • patch-2
  • patreon-auth
  • pkgs-rename
  • postmessage-to-child
  • proxy_image_commit
  • proxy_images
  • refactor-before-search
  • refactor/cleanup-test-stdlib-router
  • refactor/cors-rest
  • refactor/go-fix-modernize
  • refactor/main-nocache
  • refactor/main-realip
  • refactor/main-throttle-rest
  • refactor/main-timeout
  • refactor/middleware-consolidate
  • refactor/router-routegroup
  • refactor/ssl-routegroup
  • refs/tags/backend/v1.10.0
  • refs/tags/backend/v1.11.0
  • refs/tags/backend/v1.11.2
  • refs/tags/backend/v1.11.3
  • refs/tags/backend/v1.12.0
  • refs/tags/backend/v1.13.0
  • refs/tags/backend/v1.13.1
  • refs/tags/backend/v1.14.0
  • refs/tags/backend/v1.16.0
  • refs/tags/backend/v1.16.1
  • refs/tags/backend/v1.16.2
  • refs/tags/backend/v1.16.3
  • refs/tags/backend/v1.16.4
  • refs/tags/backend/v1.6.0
  • refs/tags/backend/v1.6.1
  • refs/tags/backend/v1.7.0
  • refs/tags/backend/v1.7.1
  • refs/tags/backend/v1.8.1
  • refs/tags/backend/v1.9.0
  • refs/tags/backend/v1/11/3
  • refs/tags/v.1.9.0
  • refs/tags/v1.10.0
  • refs/tags/v1.10.1
  • refs/tags/v1.11.0
  • refs/tags/v1.11.1
  • refs/tags/v1.11.2
  • refs/tags/v1.11.3
  • refs/tags/v1.12.0
  • refs/tags/v1.12.1
  • refs/tags/v1.13.0
  • refs/tags/v1.13.1
  • refs/tags/v1.14.0
  • refs/tags/v1.15.0
  • refs/tags/v1.16.0
  • refs/tags/v1.16.1
  • refs/tags/v1.16.2
  • refs/tags/v1.16.3
  • refs/tags/v1.16.4
  • refs/tags/v1.30.0
  • refs/tags/v1.6.0
  • refs/tags/v1.6.1
  • refs/tags/v1.7.0
  • refs/tags/v1.7.1
  • refs/tags/v1.8.0
  • refs/tags/v1.8.1
  • refs/tags/v1.9.0
  • refs/tags/v1.9.1
  • refs/tags/v1.9.2
  • remark42-pr-fix-quotedprintable-buff-flush
  • remark42-pr-fix-smtp-newclient
  • remove-redundant-frame-ancestors-log
  • remove_golangci_conf
  • remove_unused_cache
  • same-site
  • sameip-correction-vote-728
  • sanitize-hotfix-1.6
  • sanitize-loactor
  • security-fixes-2026-04
  • security-pr-a-path-traversal
  • security-pr-c-matchsiteid
  • security-pr-d-tz-tests
  • simplify_img_storage
  • site
  • site_email_notifications
  • small-improvements
  • switch-to-pnpm
  • switch_to_lcw
  • termination_fix
  • tests/synctest-refactor
  • tests_fixes
  • tests_golangci_lint
  • unsinitize
  • upd-backend-deps
  • update-comments
  • update-docs-1.7
  • update-go-version
  • update-repeater-v2
  • use-packages
  • user-comments-empy-200
  • user-info
  • valid-email-auth
  • web-js-compat
  • webhook-notify
  • workspaces

30 Aug 2026 12:17PM UTC coverage: 85.387% (-0.04%) from 85.427%
33314716797

Pull #2239

github

paskal
Remove the jest cases the browser suite already asserts

The e2e suite drives the real widget and now reports what it reaches, so the
cases it duplicates are two tests of one behaviour: one of them fails when the
widget breaks and the other tells nobody anything new.

The rule is narrower than coverage. A case goes only when a named e2e case
asserts the same behaviour, and the unit of the decision is the assertion, not
the case: a case that asserts a control renders and that its countdown reads
300s needs both covered, and the browser suite only waits for that element to
appear. Coverage rules candidates out, never in, since a component renders
during unrelated tests and marks its lines covered while nothing checks it.

Twenty-four cases go, across nine suites. The largest share is comment.test.tsx,
whose cases were almost all "does this element render", which a click proves:
Playwright refuses to click a control that is missing, hidden or disabled, and
renaming the Vote up title makes TestVote_UpvoteCountsOnce fail at its click.

Thirty-three suites give up nothing. They assert redux actions, spy call
counts, postMessage payloads, execCommand calls, CSS module class names, refs
and icon dimensions, none of which the browser suite asserts and most of which
it should not: asserting a request and its response is the better test of the
same thing.

Checked by measurement: with these cases gone jest covers no line it covered
before that the browser suite does not also cover. That check caught one
unsound deletion, the auth dropdown ignoring a clickOutside whose source is not
window.parent, which no browser case reaches because the only such message the
suite sends comes from the real parent and takes another branch.

Line coverage cannot catch every kind of mistake, and two more came out of
review. Hide rendering for an ordinary reader on another reader's comment was
restored: TestThread_HideUserRemovesTheirCommentsOnly clicks Hide as the dev
user, which ... (continued)
Pull Request #2239: Remove the jest cases the browser suite already asserts

72 of 91 new or added lines in 2 files covered. (79.12%)

1 existing line in 1 file now uncovered.

6714 of 7863 relevant lines covered (85.39%)

38.05 hits per line

Relevant lines Covered
Build:
Build:
7863 RELEVANT LINES 6714 COVERED LINES
38.05 HITS PER LINE
Source Files on master
  • Tree
  • List 54
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
33314716797 jest-thin-stacked Remove the jest cases the browser suite already asserts The e2e suite drives the real widget and now reports what it reaches, so the cases it duplicates are two tests of one behaviour: one of them fails when the widget breaks and the other tells ... Pull #2239 30 Aug 2026 01:40PM UTC paskal github
85.39
33306920257 chore/tighten-build-context Whitelist the docker build context, and ignore worktrees Previously .dockerignore listed what to keep out, so whatever appeared at the repo root next rode along uninvited: a .worktrees directory reached 362MB before anyone noticed it was being up... Pull #2238 30 Aug 2026 10:38AM UTC paskal github
85.43
33306932798 chore/tighten-build-context Whitelist the docker build context, and ignore worktrees Previously .dockerignore listed what to keep out, so whatever appeared at the repo root next rode along uninvited: a .worktrees directory reached 362MB before anyone noticed it was being up... Pull #2238 30 Aug 2026 10:38AM UTC paskal github
85.43
33286191832 fe-js-coverage Report what the browser suite reaches in the widget The backend half of this already exists; the widget had nothing. jest reports what its own suites reach, which says nothing about the browser suite, so every component the e2e cases drive counte... Pull #2234 30 Aug 2026 01:40AM UTC paskal github
85.43
33285486692 e2e-telegram-coverage Drive Telegram authentication and subscriptions through the browser Telegram is the one auth provider whose flow leaves the browser: the reader messages a bot, and no page can reach that. e2e/telegramstub answers as the bot API for the four calls... Pull #2228 30 Aug 2026 01:24AM UTC paskal github
85.39
33284848932 e2e-reveal-timing Pin the public path fix that shipped without a test The bundler used to bake a fixed public path into every entry, so an instance mounted under a prefix, which manuals/subdomain documents, asked the domain root for its provider icons and got noth... Pull #2215 30 Aug 2026 01:06AM UTC paskal github
85.43
33284422016 master Report what the browser suite reaches in the backend (#2232) The e2e suite drives the real binary through a browser and its coverage was counted nowhere, so packages it exercises heavily read as untested. The code runs in a container instead of i... push 30 Aug 2026 12:55AM UTC web-flow github
85.43
33281590099 e2e-reveal-timing Pin the public path fix that shipped without a test The bundler used to bake a fixed public path into every entry, so an instance mounted under a prefix, which manuals/subdomain documents, asked the domain root for its provider icons and got noth... Pull #2215 29 Aug 2026 11:43PM UTC paskal github
85.43
33264468282 e2e-go-coverage Report what the browser suite reaches in the backend The e2e suite drives the real binary through a browser and its coverage was counted nowhere, so packages it exercises heavily read as untested. The code runs in a container instead of in the te... Pull #2232 29 Aug 2026 05:01PM UTC paskal github
85.43
33264358751 e2e-go-coverage Report what the browser suite reaches in the backend The e2e suite drives the real binary through a browser and its coverage was counted nowhere, so packages it exercises heavily read as untested. The code runs in a container instead of in the te... Pull #2232 29 Aug 2026 04:58PM UTC paskal github
85.43
See All Builds (1889)
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc