| FAILED |
currency-consistency.spec.ts |
currency symbol propagates across invoices and payments screens |
5.5 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
dashboard-stats.spec.ts |
dashboard reflects properties / tenants / collection / tickets |
5.5 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
invoice-generate-manual.spec.ts |
owner generates a manual invoice for a tenant |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
invoice-pdf-attachment.spec.ts |
sending an invoice enqueues an outbound notification |
5.3 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
invoice-pdf-currency.spec.ts |
invoice detail and PDF use the org currency symbol |
5.6 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
invoice-pdf-generation.spec.ts |
owner downloads an invoice PDF |
5.5 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
invoice-pdf-multipage.spec.ts |
invoice PDF renders with many line items |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
lease-doc-upload.spec.ts |
owner uploads a lease document and it appears for the tenant |
5.5 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
maintenance-staff-lifecycle.spec.ts |
owner moves a maintenance ticket through its lifecycle |
4.9 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
maintenance-tenant-creates.spec.ts |
maintenance ticket can be created and appears in the list |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
messaging-owner-to-tenant.spec.ts |
owner sends a tenant notification and it lands in the queue |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
monthly-rent-generation.spec.ts |
monthly rent generation creates invoices for occupied units |
5.3 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
payment-fifo-multi-invoice.spec.ts |
partial payment allocates FIFO across multiple unpaid invoices |
5.3 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
payment-record-full.spec.ts |
owner records a full payment and the invoice is marked paid |
5.2 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
property-create.spec.ts |
owner creates a property via the UI |
37.4 s |
3 |
[2mexpect([22m[31mlocator[39m[2m).[22mtoBeEnabled[2m([22m[2m)[22m failed Locator: getByRole('button', { name: /add property/i }) Expected: enabled Timeout: 10000ms Error: element(s) not found Call log: [2m - Expect "toBeEnabled" with timeout 10000ms[22m [2m - waiting |
| FAILED |
property-edit-delete.spec.ts |
owner edits then deletes a property |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
recurring-bill-runs.spec.ts |
owner creates a recurring bill and it surfaces for the tenant |
5.3 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
reports-generation.spec.ts |
reports page loads in the UI |
23.1 s |
3 |
[2mexpect([22m[31mpage[39m[2m).[22mtoHaveURL[2m([22m[32mexpected[39m[2m)[22m failed Expected pattern: [32m/\/reports/[39m Received string: [31m"https://feature.myprophub.net/billing/settle"[39m Timeout: 5000ms Call log: [2m - Expect "toHaveURL" with timeout 5000m |
| FAILED |
statement-download.spec.ts |
owner downloads a tenant statement PDF |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
tenant-create-and-assign.spec.ts |
owner creates a tenant and assigns to a unit |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
tenant-payment-ledger.spec.ts |
tenant payment is reflected in the ledger and balance |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
tenant-vacate-and-reassign.spec.ts |
owner vacates and reassigns a tenant to a different unit |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
tenants-list-page.spec.ts |
new tenant shows in /tenants list |
5.4 s |
3 |
createTenant failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} |
| FAILED |
unit-create.spec.ts |
owner creates a unit under a property |
5.3 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| FAILED |
units-list-page.spec.ts |
new unit shows in /units list |
5.4 s |
3 |
createProperty failed: 402 {"message":"Account suspended for non-payment","code":"ACCOUNT_SUSPENDED","redirect":"/billing/settle"} [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m Expected: [32mtrue[39m Received: [31 |
| SKIPPED |
recurring-bill-create.spec.ts |
owner creates a recurring bill |
316 ms |
1 |
skipped |
| PASSED |
auth-login.spec.ts |
logs in, lands authenticated, then logs out |
1.9 s |
1 |
|
| PASSED |
auth-login.spec.ts |
rejects bad credentials |
2.4 s |
1 |
|
| PASSED |
auth-tenant-login.spec.ts |
tenant logs in and reaches the tenant portal |
1.2 s |
1 |
|
| PASSED |
auth.setup.ts |
authenticate as owner |
2.5 s |
1 |
|
| PASSED |
auth.setup.ts |
authenticate as tenant |
1.9 s |
1 |
|
| PASSED |
listing-photos.spec.ts |
owner uploads photos to a listing and they appear via the API |
2.5 s |
1 |
|
| PASSED |
reports-generation.spec.ts |
GET /api/reports/financial returns 200 + JSON body |
1.6 s |
1 |
|
| PASSED |
reports-generation.spec.ts |
GET /api/reports/occupancy returns 200 + JSON body |
1.4 s |
1 |
|
| PASSED |
reports-generation.spec.ts |
GET /api/reports/maintenance returns 200 + JSON body |
1.3 s |
1 |
|