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

bleedingdeacons / reach
86%

Build:
DEFAULT BRANCH: main
Repo Added 22 Jul 2026 01:37AM UTC
Token OulU2J9wcpeE3Q2PHoC97yHdrvyrjef5v regen
Build 205 Last
Files 95
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 main
branch: main
CHANGE BRANCH
x
Reset
Sync Branches
  • main
  • certification-enum-values
  • chore/add-dependabot
  • chore/adopt-wp-mocks
  • chore/ci-semgrep-and-pin-actions
  • chore/composer-bumps-with-polyfill-stub
  • chore/declare-php-extensions
  • chore/dev-tooling-standardisation
  • chore/dynamic-phpstan-badge
  • chore/fix-github-plugin-uri
  • chore/gitignore-composer-lock
  • chore/gitignore-phpstan-local-override
  • chore/phpcs-root-files
  • chore/phpstan-level-7
  • chore/phpstan-level-8
  • chore/phpstan-level6
  • chore/phpstan-level6-haslogger-types
  • chore/phpstan-level6-iterable-types
  • chore/psr12-gate
  • chore/readme-phpstan-level6
  • chore/release
  • chore/release-1.12.1
  • chore/release-1.12.2
  • chore/release-1.13.1
  • chore/release-v1-10-0
  • chore/release-v1-8-10
  • chore/release-v1.13.0
  • chore/release-version-bump
  • chore/scheduled-semgrep-scan
  • chore/tidy-phpstan-baseline
  • chore/use-shared-scrutiny-spy
  • chore/use-shared-unity-doubles
  • chore/wp-mocks-2.0
  • ci/composer-audit
  • ci/release-on-merge
  • ci/validate-lock
  • dependabot/composer/dependencies-3022dae4de
  • dependabot/github_actions/actions-02325a8da5
  • docs/ios-deferred-not-permanent
  • docs/reach-help-guide
  • docs/readme-testing-section
  • docs/tests-badge
  • feat/alert-levels-and-response
  • feat/answered-messages-clear-other-handsets
  • feat/descriptive-user-agent
  • feat/device-payload-key
  • feat/devices-table-ajax
  • feat/encrypt-android-alert-payloads
  • feat/encrypt-ios-alert-payloads
  • feat/encrypt-whole-push-payload
  • feat/hand-device-targeting
  • feat/hand-gate-email-and-home-group
  • feat/hand-push-alerts
  • feat/hand-send-reply-resend
  • feat/handset-contact-reveal
  • feat/handset-messages-and-live-alerts
  • feat/key-fault-detection
  • feat/major-for-encrypted-push
  • feat/manage-devices-capability
  • feat/message-a-committee
  • feat/message-uuid-and-acknowledgement-notices
  • feat/native-list-tables-hand-devices
  • feat/php-84-wp-711
  • feat/require-https-on-handset-routes
  • feat/send-alerts-capability
  • feat/send-message-page
  • feat/twelfth-step-search-landline
  • fix/build-eol
  • fix/bulk-action-name-collision
  • fix/idempotent-release-job
  • fix/install-schema-on-upgrade
  • fix/link-call-attempt-detail
  • fix/phpstan-dead-branch
  • fix/push-carries-contact-flag
  • fix/refuse-enrolment-with-unrecoverable-key
  • fix/release-push-retry
  • fix/reset-token-origin-and-callreq-throttle
  • fix/send-form-shared-nonce
  • fix/session-authz-and-hardening
  • fix/surface-total-push-failure
  • fix/throttle-oauth-and-jwks-refresh
  • fix/vouch-for-trusted-signup-writes
  • refactor/shared-password-store
  • release/v1.11.0
  • release/v1.12.0
  • release/v1.9.0
  • require-certified-responder
  • test/assert-key-fault-per-row
  • test/cover-admin-layer
  • test/coverage-alerts-devices
  • test/member-view-stub-landline
  • test/pest-5
  • tests/coverage-wpmock
  • untrack-idea-files

24 Sep 2026 03:14AM UTC coverage: 86.422% (-0.02%) from 86.437%
35950637642

push

github

web-flow
test: convert the suite to Pest 5 (#122)

Every test file is now a closure-based Pest spec except one kept as a
PHPUnit class: SecureTransportConstantTest, split out of SecureTransportTest,
defines REACH_ALLOW_INSECURE_TRANSPORT and so must run in a separate process,
which Pest refuses. Pest runs it as it is.

tests/Pest.php binds every spec to ReachTestCase, except UserAgentTest,
which stays on wp-mocks' TestCase as it was. Private helpers became
file-level functions where they were pure and unique in the namespace, and
closures on $this in beforeEach where they needed the test case or their
name was shared with another file.

Test doubles that other test files reached by require_once-ing a whole test
file (WpdbStub, ConfigurableProvider, ControllerStubGeocoder) moved to
tests/Fixtures; the wpdb alias moved to tests/bootstrap.php, and the two
duplicate geocoder stubs gave way to the existing Fixtures\StubGeocoder.

tests/bootstrap.php defines PHPUNIT_COMPOSER_INSTALL when missing, so the
isolated child process has an autoloader under Pest. phpunit.xml.dist
raises memory_limit to 512M: with coverage on, unserialising that child's
result overran the 128M default and fataled the run.

1250 -> 1250 tests, 3590 -> 3590 assertions, 0 skipped. Line coverage
5808/6746 -> 5806/6745: RequiresSecureTransport's ABSPATH guard, which
covers() loads before coverage starts, and one CallAttemptsPage line that
pcov stops counting as executable once the file is loaded that early.
composer test, test:unit and test:coverage now run pest.

6384 of 7387 relevant lines covered (86.42%)

15.28 hits per line

Relevant lines Covered
Build:
Build:
7387 RELEVANT LINES 6384 COVERED LINES
15.28 HITS PER LINE
Source Files on main
  • Tree
  • List 95
  • 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
35950637642 main test: convert the suite to Pest 5 (#122) Every test file is now a closure-based Pest spec except one kept as a PHPUnit class: SecureTransportConstantTest, split out of SecureTransportTest, defines REACH_ALLOW_INSECURE_TRANSPORT and so must run in... push 24 Sep 2026 03:18AM UTC web-flow github
86.42
35543120714 main fix: declare the PHP extensions this plugin actually uses (#120) composer.json already declared ext-json, ext-openssl, but not ext-mbstring. A host without them would install the plugin happily and fail at runtime instead of at install time. Add... push 20 Sep 2026 10:59PM UTC web-flow github
86.44
35540059982 main feat!: move to PHP 8.4/8.5 and PHPUnit 13, tested to WP 7.1.1 (#119) Part of the suite-wide PHP 8.5 / WordPress 7.1.1 upgrade. - Requires PHP 8.1 -> 8.4, header and readme.txt. WordPress 7.1 recommends 8.4/8.5, and PHPUnit 13 requires >= 8.4. ... push 20 Sep 2026 09:59PM UTC web-flow github
86.44
34486565115 main feat: seal the alert payload for iOS as well as Android The last plaintext path out of Reach. An Android push has carried one field for a while now — `ciphertext`, and nothing beside it — while iOS was sent the whole alert readable: title, body, ... push 10 Sep 2026 02:07PM UTC web-flow github
86.4
34392182184 main fix: introduce outbound requests with a descriptive user-agent Adds Reach\Core\UserAgent and applies it to all seven outbound calls — postcodes.io, the JWKS fetch, both FCM requests and the Google, Microsoft and Facebook token endpoints — which u... push 09 Sep 2026 07:03PM UTC web-flow github
86.41
34347179136 main feat(hand): let a handset ring the person it just picked (#116) The message picker named people it gave no way to phone. A responder who found somebody in the directory had to go and look their number up somewhere else, which on a handset in the ... push 09 Sep 2026 11:48AM UTC web-flow github
86.39
34299400352 main fix: move the reset token out of the URL, guard the session token, throttle call requests (#115) Three findings from the security review. F9. PasswordResetMailer sends /reach/set-password?token=…, so the token sat in the address bar and browser ... push 09 Sep 2026 01:32AM UTC web-flow github
86.5
34297150596 main fix: throttle the OAuth surface and floor the JWKS cache bust (#114) OAuthController was the only unauthenticated controller in Reach taking no RateLimiter at all — DeviceAuthController, PasswordAuthController, NearestMembersController and AlertC... push 09 Sep 2026 01:01AM UTC web-flow github
86.42
34297137128 main fix: vouch for Trusted's sign-up writes with the session token (#113) Trusted's POST /signup and DELETE /signup/{rota} resolve the acting member only through the trusted_signup_member filter, which Plugin::init() answers from Reach's session cook... push 09 Sep 2026 12:59AM UTC web-flow github
86.37
34286828592 main feat(search): show the landline and contact preference (#112) Both 12th-step searches held one number for a member who may have two. An admin looking someone up, or a caller working the find page, could only ever be given the mobile — a landline ... push 08 Sep 2026 10:41PM UTC web-flow github
86.35
See All Builds (205)

Badge your Repo: reach

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

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

Refresh
  • 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