.raklet.net| Test | Suite | Status | Owner |
|---|---|---|---|
| 09-contact-subscriptions-crud | PM | FIXED in #13851 | — |
| 11-contact-payments-crud | PM | FIXED in #13851 | — |
| 12-contact-subscription-reminders | PM | FIXED in #13851 | — |
| 14-contact-donations-crud | PM | FIXED in #13851 | — |
| 28-social-settings-mutation | AR | FIXED in #13851 | — |
| 34-messages-email-draft-lifecycle | AR | FIXED in #13851 | — |
| 36-messages-sender-identities | AR | FIXED in #13851 | — |
| 24-settings-fields-mutation | AR | FIXED in #13854 (open) | — |
| 25-events-clone-online-event | AR | FIXED in #13854 (open) | — |
| 26-events-clone-venue-event | AR | FIXED in #13854 (open) | — |
| 22-application-form-create-custom-field | AR | Test author | see § Category A |
| 28-directory-form-requirements | AR | Test author + manual cleanup | see § Category A |
| 35-messages-template | AR | Test author | see § Category B |
| 06-fundraising-campaign-crud | PM | Needs Stripe-sandbox password | see § Category C |
| 07-fundraising-admin-donation-crud | PM | Needs Stripe-sandbox password | see § Category C |
| 15-application-form-invalid-email… | PM | Needs Stripe-sandbox password | see § Category C |
| 16-application-form-auto-approve-quick-register | PM | Product fix RAK-349 | see § Category D |
These look like "selector drift" in the failure messages but the screenshots reveal a different story: the general-test-account org on .raklet.net has accumulated test fixtures across many runs and is hitting plan limits / pagination windows. Cleanup helpers either don't run or don't cover everything that was created.
28-directory-form-requirementsTimed out after 60000ms waiting for selector to become visible: input[ng-model='Data.Directory.Name'], input[name='Name']$B — exactly 10 directories on the org, all named amk-dir-search-* / am6-dir-* (test leftovers).Remove-DirectoriesByNamePrefix in browse-tests/helpers/directory.ps1 matches the current run's prefix only (am6-dir-form-…). Earlier runs used different prefixes (am6-dir-search-…, amk-dir-search-…) so the cleanup never removes them. Each run leaves all earlier-prefix orphans behind, ratcheting up the count until the plan limit hits.
Start-DirectoryCreate clicks a[ng-click*="checkForLimitAndRedirect"]. That handler checks orgs.RemainingDirectoryCount server-side and, when zero, opens the upgrade modal instead of navigating to the create form. The test then waits 60s for an input that never appears.
general-test-account.raklet.net and delete the 10 test directories. Tests pass once. Will regress when the next test fails before its own cleanup.am[3-9]-dir-* / amk-dir-* / browse-dir-*. Lossy but self-healing.exit 0 # SKIP with a clear message.(2) + (3) combined. Broader cleanup is correct; setup-step makes it idempotent.
22-application-form-create-custom-fieldpage.evaluate: Error: custom field missing — the test creates a custom field on the application form, then asserts it appears in the row repeater for ApplicationFormSettings.Fields.Re-run a focused dispatch with the JS error captured in full + walk through the create flow in $B to see exactly where the billing redirect comes from. Not isolated yet.
24-settings-fields-mutationfield not listed: am3-field-browse20260521161410-add-updateam3-field-browse*…, browse-field-*, etc.). The page is paginated/scrollable and the search finds nothing because the new field is appended at the bottom of a 174-row list.$B — settings/fields/ on general-test-account shows 174 custom-field repeats.Switched the assertion to read the field from AngularJS scope ($rootScope walk to Data.Fields then match by Name) instead of DOM row scan — same pattern as my 25-tags fix in #13844.
These are test architecture issues that can't be fixed with a selector tweak.
Event 'browse-clone-online-20260521162315-47396316' not found in events listData.EventsFuture.Data.New-EventFormData defaulted to StartDate = 01/01/2021 and EndDate = 03/03/2027 — a 2021-start event sorts below the visible window after years of test accumulation.Wait-EventVisibleInList clicked Load More once before throwing; filtered view of browse-clone-online already has 27+ leftover events.?name=… URL filter does work server-side but returns only the first 9 matches.New-EventFormData. New events sort to the top of the default list. No test assertion checks the date, so this is safe.Wait-EventVisibleInList (up to 25 iterations per attempt, re-navigate between outer attempts). Verified live: filtered view of browse-clone-online goes 9 → 11 on one Load More click; repeated clicks reveal all matching events.Once #13854 lands and the next dispatch confirms the fix, please prune accumulated browse-clone-* events on the org (currently 27+ from prior failed runs) so Load More iterations stay short.
35-messages-templateDraft email 'am6-msg-tpl-browse20260521171158 Email Template Title Here' was not listed. (PR #13851's poll-with-reload helps timing races; this is NOT a timing race — the title is never persisted)New-EmailTemplate in browse-tests/helpers/messages.ps1 uses Invoke-Browse fill input[ng-model='Email.newEmailName'] then saveStep('name') + saveEmail. The fill IS using Invoke-Browse fill (which dispatches events correctly — unlike the contact-add bug already fixed in #13851), but the save persists with no name.
saveStep('name') only persists the wizard step boundary, not the actual name; a separate Angular form binding races the click.Email.newEmailName but the persisted entity is keyed off a different scope variable.New-EmailTemplate step by step, capturing modal state + Angular scope at each step (same pattern that found the contact-add bug). Investigation needs an end-to-end re-run after each tweak.messagesService.createTemplate({Name: title, …}).(1). Likely reveals another ng-model-event-not-firing bug, fixable with the same setVal shim pattern.
These require a Stripe sandbox sub-org. I cannot validate fixes without the password.
Credentials surfaced in Test.Extensions/Config.cs:
StripeCustomDestinationPermalink = "stripe-custom-destination"StripeCustomDestinationMail = "raklet.test+stripe-custom-destination@gmail.com"StandartPassword = "rakletrocks2022#" is the convention for raklet.test+*@gmail.com fixture accounts but I haven't confirmed it for this specific account. Actual CI values live in GH secrets BROWSE_TEST_STRIPE_ACCOUNT / BROWSE_TEST_STRIPE_ACCOUNT_EMAIL — write-only.
What I need: the password for that fixture user. With it I'll add the trio to browse-tests/local.settings.json (gitignored) and drive each failing flow via $B.
06-fundraising-campaign-crudbrowse failed: fill #Goal 25 — Element not found or not interactable within timeout06-fundraising-campaign-crud.ps1 lines 90-95: navigates to /manager/donations/campaigns/, clicks Add Campaign, waits for #Name, fills #Name, then fills #Goal — and #Goal doesn't render in time.#Goal is a hidden field until you toggle "Has fundraising goal" or similar checkbox.#Goal after a debounce on #Name.07-fundraising-admin-donation-crudbrowse failed: click div[id*='personSearch'] .ui-select-match, div.modal-content [ng-click*='select.activate'] — Selector matched multiple elementsThe modal has multiple ui-select widgets (likely both Member AND Campaign use ui-select). Both match the broad fallback div.modal-content [ng-click*='select.activate'].
Narrow to .modal.in div[id^='personSearch'] .ui-select-match (exact id^= and visible-modal-only). Confidence is high but needs a sandbox-credentialed re-run to confirm.
15-application-form-invalid-email-stripe-standard-destinationTimed out after 30000ms waiting for selector to become visible: #memberEmailMessage, .form-group.text-dangerhelpers/application-form-payment.ps1 drives a public application form with a duplicate email, expects an inline error at #memberEmailMessage or .form-group.text-danger.Error display selector drift on the public apply page. The error might now render in .invalid-feedback, [class*='Error'], or via a growl instead of inline.
16-application-form-auto-approve-quick-registerAuto-approve application '…' did not appear in /manager/membership/applications/ within 60s.The test is correctly catching a real product regression. Per memory the issue is High priority. Once the RAK-349 fix ships, this test should pass without any test-side change.
general-test-account.raklet.net: prune accumulated test directories (10/10 against plan limit), application-form custom fields, settings custom fields (174+), and old test events (browse-clone-*, am[3-9]-* prefixes). This unblocks AR 22 / 24 / 28-directory immediately and gives a clean baseline.Remove-DirectoriesByNamePrefix and the equivalent helpers in directory.ps1, messages.ps1, events.ps1. Match any am[3-9]-*, amk-*, browse-*, am6-* test prefix — not just the current run's prefix.general-test-account org doesn't keep ratcheting up plan-limit pressure.Every fix in PR #13851 and PR #13854 was validated live by logging into general-test-account.raklet.net via $B (the gstack browse daemon) and walking through the failing flow manually before pushing the fix. No blind helper fixes per the existing feedback_no_blind_helper_fixes memory rule (broke tests 1-5 last time).
Sample probe (AngularJS scope-walk used in PR #13854):
(function(){
var injector = angular.element(document.body).injector();
if (!injector) {
var els = document.querySelectorAll('[ng-app],[data-ng-app]');
if (els.length) injector = angular.element(els[0]).injector();
}
var rs = injector.get('$rootScope');
function walk(s, depth) {
if (!s || depth > 10) return null;
if (s.Data && s.Data.Fields) return s;
var c = s.$$childHead;
while (c) {
var r = walk(c, depth + 1);
if (r) return r;
c = c.$$nextSibling;
}
return null;
}
var scope = walk(rs, 0);
return scope ? scope.Data.Fields.length : 'not found';
})()