Test Scenario: Verify the trade blotter

Table of Contents

This page documents a test scenario verifying Merge the trades and structures screens in Trade Blotter — the remaining work. It walks the one screen the Trading area offers: the trades and the structures read together, by the portfolio tree or by counterparty. Record the outcome by hand in each *** Result.

1. Before you start

  • The fleet is up on this checkout and the database holds tenant acme_corporation provisioned from acme_demo with its trade population. Recreate and provision only if it is stale: compass db recreate -y -k, then compass shell -f projects/ores.shell/scripts/library/provisioning/how_do_i_provision_the_system_with_acme_corporation_holding_group.ores.
  • What the screen shows is one party's holdings. Signed in as diane.kay you see the structures and trades of ACME Corporation UK plc. The database holds the other legal entities' holdings too; they belong to parties this session does not work for, and they are not a defect.
  • A structure's legs are placed where its trades are booked. The population books most structures into one book each; one structure whose legs sit in two books is the case Step 5 needs, and it says so on its row when the data has one.

2. Scenario Info

Field Value
Verifies task Merge the trades and structures screens
Parent story Trade Blotter — the remaining work
Target screen Trade blotter, at /trading/blotter.
Clients  
State PASSED

3. Steps

3.1. Log in as diane.kay

  • Open http://127.0.0.1:20802/.
  • Username diane.kay@acme_corporation, password Secure-Password-123, then Sign in.
  • Passes when the home page greets Welcome, Diane Kay and the status bar names tenant Acme Corporation and party ACME Corporation UK plc.

3.1.1. Result

Field Value
Status PASS

3.2. Reach the blotter from the area

  • Choose Trading in the menu.
  • Passes when the area page offers one card, Trade blotter.
  • Open it. Passes when the address is /trading/blotter and the crumb reads Home › Trading › Trade blotter.
  • Also open /trading/trades and /trading/structures in the address bar: each passes when it lands on /trading/blotter, because those two lists are the screen's rows now.

3.2.1. Result

Field Value
Status PASS

3.3. Read the portfolio tree's counts

  • The rail on the left is headed Read by and offers Portfolio tree.
  • Passes when the rail's first node is the party, ACME Corporation UK plc, with a number on the same line, and each portfolio and book under it carries its own number.
  • Read the biggest portfolio's number, open it, and read the list's pager. Passes when the pager's total equals the number the node stated.
  • Passes when a book with nothing booked to it is not drawn, and when the numbers add up: a portfolio's figure is the rows placed anywhere below it.

3.3.1. Result

Field Value
Status PASS

3.4. Read the rows and their columns

  • The columns are Identifier, What, Book, Counterparty, Date, State; Structure is not drawn yet.
  • Passes when a structure's row states its reference (PKG-… or DYN-…), its kind, the book or books its legs sit in, a counterparty name, a date and a state.
  • Passes when a trade's row states its own reference (POP-…) and its own book, counterparty, date and state, and when the Book and Counterparty cells are links.
  • Passes when no row is a leg of a structure: a structure's legs are inside it, and its row stands in their place.

3.4.1. Result

Field Value
Status PASS

3.5. Narrow to a book and a portfolio

  • Choose a book on the rail. Passes when every row's Book is that book, and the pager's total equals the number the node stated.
  • Choose the portfolio above it. Passes when the list holds the rows of every book below that portfolio, and its total equals the portfolio's number.
  • Passes when a structure whose legs span books is not under either book but under the portfolio that holds them both, and its row carries the chip spans books and names both books. If the data holds no such structure, record that here and pass the step on the chip's absence being explainable.

3.5.1. Result

Field Value
Status PASS

3.6. Flatten the list to the legs

  • Tick Flat beside Group trades.
  • Passes when the Structure column appears, the pager's total grows to every trade of the party, and each leg states the structure that holds it.
  • Passes when a trade no structure holds shows a dash in Structure, and when unticking Flat brings back the top rows with the column gone.

3.6.1. Result

Field Value
Status PASS

3.7. Read the rows by counterparty

  • Choose Counterparty in Read by. Passes when the rail becomes the counterparties the rows face, each with its own number, and the tree is gone.
  • Choose a counterparty. Passes when every row's Counterparty is that one, and the pager's total equals the node's number.
  • Choose Portfolio tree again. Passes when the tree is drawn at once, not the counterparties and not a wait.
  • Choose a counterparty again, then the tree: the same, both ways.

3.7.1. Result

Field Value
Status PASS

3.8. Read the rows by asset class

  • Choose Asset class in Read by. Passes when the rail becomes the classes the party's rows fall into, each with its name from the refdata catalogue, a coloured dot, and its own number: Bond, Commodity, Credit, Equity, FX, Interest Rate.
  • Choose Interest Rate. Passes when every row's What badge reads a rates instrument and the pager's total equals the node's number.
  • Passes when the nodes add up to the party's total: a structure has no class, so the figure counts the classed trades only and a flat row with no class is not counted twice.
  • Choose Portfolio tree again. Passes when the tree is drawn at once.

3.8.1. Result

Field Value
Status PASS

3.9. Open what a row names

  • From the top rows, click a structure's identifier. Passes when the structure's page opens at /trading/structures/<reference>, titled by its kind, with its tree beside it and its legs under Members.
  • Go back, tick Flat, and click a trade's identifier. Passes when the trade's page opens at /trading/trades/<id> with its Details tab.
  • From either page, the crumb leads back to the blotter.

3.9.1. Result

Field Value
Status PASS

3.10. Group trades from the blotter

  • Click Group trades. Passes when the grouping screen opens, at /trading/structures/group.
  • Pick two trades of one counterparty and group them. Passes when the new structure is offered back to the blotter: return to /trading/blotter and it is one row holding those two trades as legs.
  • If the picker offers no pair sharing a counterparty, record it: that is the population's shape, not the screen's.

3.10.1. Result

Field Value
Status PASS

4. Results

Field Value
Status PASSED
Completed at 2026-10-30T14:32:52Z
Branch  
Commit  
Worktree  

5. Notes

The steps above were run by hand at 2026-10-30T14:32:52Z, when the screen offered two ways to read the rows. Read the rows by asset class was added afterwards, on 2026-10-31, and passed under the browser case tools/ui-tests/specs/blotter.spec.ts at commit 89ec35d5b6 rather than by hand.

Emacs 29.3 (Org mode 9.6.15)