Skip to content

Conversation

@cruzdanilo
Copy link
Member

@cruzdanilo cruzdanilo commented Jan 30, 2026


Open with Devin

Summary by CodeRabbit

  • New Features
    • Localized accessibility label added to the loan amount selector for improved screen‑reader support.
    • Expanded push notification support across additional environments/domains.
    • Improved wallet transaction handling and status tracking for more reliable transaction updates.

✏️ Tip: You can customize this high-level summary in your review settings.

@changeset-bot
Copy link

changeset-bot bot commented Jan 30, 2026

🦋 Changeset detected

Latest commit: 9b97664

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai
Copy link

coderabbitai bot commented Jan 30, 2026

Caution

Review failed

The pull request is closed.

Walkthrough

Accessibility label added to the loan amount selector; Maestro flows refactored with conditional runFlow entries and tag syntax changes; Onesignal domain-to-ID mapping expanded; e2e script changed to watch mode; e2e utilities extended with concurrent wallet_sendCalls and wallet_getCallsStatus plus TX id utilities.

Changes

Cohort / File(s) Summary
Changeset & Accessibility
\.changeset/tender-sloths-judge.md, src/components/loans/AmountSelector.tsx
Added changeset for a patch release; introduced i18n and aria-label to the loan amount Input for accessibility.
Maestro Test Flows
.maestro/flows/local.yaml, .maestro/flows/production.yaml
Converted tags to inline arrays; replaced a standalone repeat with conditional runFlow blocks in local flow (platform and portfolio checks), changing public flow structure and execution paths.
Onesignal config
common/onesignalAppId.ts
Expanded domain→appId mapping to include web.exactly.app, base.exactly.app, sandbox.exactly.app, base-sepolia.exactly.app and a new fallback ID; environment variable override preserved.
E2E script
server/script/e2e.ts
Changed Vitest invocation from a single run to continuous --watch mode.
E2E Wallet Enhancements
src/utils/e2e.ts
Added wallet_sendCalls to send calls concurrently and produce a composite TX id; added wallet_getCallsStatus to parse composite id and fetch per-call receipts (uses publicClient); introduced TX utility helpers and constants; replaced hexToBigInt usage with BigInt.

Sequence Diagram(s)

mermaid
sequenceDiagram
rect rgba(200,230,255,0.5)
participant TestRunner
participant e2eUtils
participant Wallet
participant RPC as "JSON-RPC / Provider"
participant Blockchain
participant PublicClient
end
TestRunner->>e2eUtils: wallet_sendCalls(calls[])
e2eUtils->>Wallet: sendTransactions concurrently (call1...callN)
Wallet->>RPC: submit tx for each call
RPC->>Blockchain: broadcast txs
Blockchain-->>RPC: tx hashes
RPC-->>Wallet: tx hashes
Wallet-->>e2eUtils: tx hashes
e2eUtils->>e2eUtils: compose compositeId from hashes + chainId + magic
e2eUtils-->>TestRunner: compositeId
TestRunner->>e2eUtils: wallet_getCallsStatus(compositeId)
e2eUtils->>PublicClient: getTransactionReceipt(txHash) for each hash
PublicClient-->>e2eUtils: receipts
e2eUtils-->>TestRunner: status { receipts, overallStatus, atomic?, ... }

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • nfmelendez
  • dieguezguille
  • franm91
🚥 Pre-merge checks | ✅ 1 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title "✅ e2e misc improvements" is vague and generic, using the non-descriptive term "misc improvements" that fails to convey the actual changes in the pull request. Consider a more specific title that captures the main change, such as "Add aria labels to loan selector and improve e2e test infrastructure" or "Improve accessibility and e2e testing setup".
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch e2e

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link

Summary of Changes

Hello @cruzdanilo, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the end-to-end (e2e) testing suite and improves application accessibility. It introduces an aria-label for a critical input field, refines Maestro test flows for greater stability across different platforms, and upgrades the e2e wallet simulation to handle and track batched transactions more effectively. Additionally, the changes expand OneSignal integration to support a broader range of deployment environments.

Highlights

  • Accessibility Improvement: Added an aria-label to the loan amount selector input field, enhancing usability for assistive technologies.
  • E2E Test Infrastructure Enhancements: Improved Maestro test flows by adding retry logic for portfolio reading and implementing platform-specific handling for 'Pending proposals' checks, addressing a known Maestro issue. The vitest command for e2e tests was also updated to run in watch mode.
  • Advanced E2E Wallet Simulation: Refactored the e2e wallet interaction (window.ethereum.request) to support batched transaction sending (wallet_sendCalls) and introduced a new wallet_getCallsStatus method for robust tracking of batched transaction receipts and their overall status.
  • OneSignal Configuration Expansion: Extended the OneSignal App ID mapping to include additional environments such as base.exactly.app, sandbox.exactly.app, and base-sepolia.exactly.app, along with an updated default fallback ID.
  • Minor Configuration Formatting: Standardized the tags array syntax in Maestro YAML configuration files for consistency.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces several miscellaneous improvements for the end-to-end tests, including an accessibility improvement by adding an aria-label to the loan amount selector. My review focuses on improving code clarity and correctness. I've suggested making an error message more descriptive and refactoring a complex calculation for better readability in the E2E utility file. I also noted a missing translation key for the new aria-label which should be added to the English translation file.

Copy link

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 5 additional flags.

Open in Devin Review

@sentry
Copy link

sentry bot commented Jan 30, 2026

Codecov Report

❌ Patch coverage is 23.07692% with 10 lines in your changes missing coverage. Please review.
✅ Project coverage is 63.80%. Comparing base (021a7bd) to head (6d55474).

Files with missing lines Patch % Lines
src/utils/e2e.ts 9.09% 10 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #702      +/-   ##
==========================================
- Coverage   64.54%   63.80%   -0.74%     
==========================================
  Files         173      173              
  Lines        5378     5385       +7     
  Branches     1509     1512       +3     
==========================================
- Hits         3471     3436      -35     
- Misses       1727     1769      +42     
  Partials      180      180              
Flag Coverage Δ
e2e 42.20% <23.07%> (-0.83%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/components/loans/AmountSelector.tsx (1)

24-95: 🛠️ Refactor suggestion | 🟠 Major

Avoid the single‑letter t abbreviation.

Use a descriptive name (e.g., translate) for readability and to align with naming conventions.

🔧 Suggested rename
-  const { t } = useTranslation();
+  const { t: translate } = useTranslation();
...
-                    aria-label={t("Amount")}
+                    aria-label={translate("Amount")}

As per coding guidelines, do not use abbreviations or cryptic names; write out full words like error, parameters, request instead of err, params, req.

🤖 Fix all issues with AI agents
In @.maestro/flows/local.yaml:
- Around line 26-28: The inline mapping/sequence in the runFlow block has extra
spaces inside braces/arrays; update the when and commands values to remove
spaces immediately after "{" and before "}" so the mapping uses {true:
"${output.portfolio === output.portfolioBefore}"} and the array items use
[{tapOn: Home},{runFlow: ../subflows/readPortfolio.yaml}] (i.e., adjust the
runFlow block's when and commands entries to eliminate inner-brace/array spacing
around the inline mappings).
- Around line 36-47: The YAML has lint issues in the two runFlow blocks: add two
spaces before the inline comment (change " # HACK..." to "  # HACK...") and
remove extra spaces inside the inline mapping braces in the when clauses and
repeat while/mapping entries (e.g. change when: { true: "${maestro.platform !=
'web'}" } to when: {true: "${maestro.platform != 'web'}"} and when: { platform:
web } to when: {platform: web}, and similarly remove spaces in repeat/commands
mappings for tapOn: Home and tapOn: { id: Home } so they match the suggested
compact inline-brace style).

In `@server/script/e2e.ts`:
- Line 14: The spawn call that creates `v` in e2e.ts currently spreads
`process.env` and unconditionally enables `--watch`; instead, read required env
values once at startup via a small initializer (e.g., a getEnv/config helper)
and inject them into the spawn env object (do not spread process.env), and gate
the `--watch` arg behind an interactive flag (e.g., VITEST_WATCH or CI check) so
in CI you pass `run` (or omit `--watch`); update the `spawn("vitest", ...)`
invocation and any code that references `v` to use the new env object and flag
so the script no longer directly accesses process.env and only watches in
interactive sessions.

In `@src/utils/e2e.ts`:
- Around line 63-76: The wallet_getCallsStatus handler currently uses
Promise.all over publicClient.getTransactionReceipt which throws
TransactionReceiptNotFoundError for pending receipts and rejects the whole call;
change this to use Promise.allSettled or wrap each
publicClient.getTransactionReceipt call in try/catch (inside the Array.from
mapper) to convert not-found/pending errors into a placeholder receipt
indicating pending, then compute receipts and set status to 100 if any receipt
is pending (otherwise 200/500 as before); ensure you keep existing symbols
(params validation, sliceHex, hexToNumber, publicClient.getTransactionReceipt,
receipts array) and preserve the returned shape (version, id, atomic, receipts,
status, chainId).

@cruzdanilo cruzdanilo force-pushed the e2e branch 2 times, most recently from 6fb339d to 6d55474 Compare January 30, 2026 19:19
@cruzdanilo cruzdanilo merged commit 9b97664 into main Jan 30, 2026
2 of 4 checks passed
@cruzdanilo cruzdanilo deleted the e2e branch January 30, 2026 20:09
Sign up for free to 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