1+ import { test , expect } from '@playwright/test' ;
2+ import crypto from 'crypto' ;
3+ import { waitForThen } from 'tests/common/utils' ;
4+
5+ test ( 'Create a simple scenario' , async ( { page } ) => {
6+ await page . goto ( '/scenarios' ) ;
7+
8+ const scenarioName = crypto . randomUUID ( ) ;
9+
10+ await page . getByRole ( 'button' , { name : 'New Scenario' } ) . click ( ) ;
11+
12+ await waitForThen (
13+ page ,
14+ page . getByRole ( 'textbox' , { name : 'Name' } ) ,
15+ async ( field ) => await field . fill ( scenarioName ) ,
16+ ) ;
17+
18+ await page . getByRole ( 'textbox' , { name : 'Description' } ) . fill ( 'DESC' ) ;
19+
20+ await waitForThen (
21+ page ,
22+ page . getByRole ( 'combobox' ) ,
23+ async ( box ) => await box . click ( ) ,
24+ ) ;
25+
26+ await page . waitForTimeout ( 200 ) ;
27+
28+ await waitForThen (
29+ page ,
30+ page . getByRole ( 'option' , { name : 'transactions' } ) ,
31+ async ( option ) => await option . click ( ) ,
32+ ) ;
33+
34+ await page . getByRole ( 'button' , { name : 'Save' } ) . click ( ) ;
35+
36+ await waitForThen (
37+ page ,
38+ page . getByRole ( 'button' , { name : 'Add trigger condition' } ) ,
39+ async ( button ) => await button . click ( ) ,
40+ ) ;
41+
42+ await page . getByRole ( 'button' , { name : 'Condition' , exact : true } ) . click ( ) ;
43+ await page . getByRole ( 'button' , { name : 'Select an operand...' } ) . first ( ) . click ( ) ;
44+ await page . getByRole ( 'option' , { name : 'transactions' } ) . hover ( ) ;
45+ await page . getByText ( 'amount' ) . click ( ) ;
46+ await page . getByRole ( 'combobox' ) . click ( ) ;
47+ await page . getByRole ( 'option' , { name : '>' } ) . click ( ) ;
48+ await page . getByRole ( 'button' , { name : 'Select an operand...' } ) . click ( ) ;
49+ await page . getByRole ( 'combobox' , { name : 'Select or create an operand' } ) . fill ( '100' ) ;
50+ await page . getByRole ( 'combobox' , { name : 'Select or create an operand' } ) . press ( 'Enter' ) ;
51+ await page . getByRole ( 'button' , { name : 'Save' } ) . click ( ) ;
52+ await page . getByRole ( 'link' , { name : 'Rules' } ) . click ( ) ;
53+ await page . getByRole ( 'button' , { name : 'Add' } ) . click ( ) ;
54+ await page . getByRole ( 'button' , { name : 'Add a Rule Add a rule to the' } ) . click ( ) ;
55+ await page . getByRole ( 'button' , { name : 'Group' , exact : true } ) . click ( ) ;
56+ await page . getByRole ( 'button' , { name : 'Select an operand...' } ) . first ( ) . click ( ) ;
57+ await page . getByRole ( 'option' , { name : 'transactions' } ) . hover ( ) ;
58+ await page . getByText ( 'amount' ) . click ( ) ;
59+ await page . getByRole ( 'combobox' ) . click ( ) ;
60+ await page . getByRole ( 'option' , { name : '>' } ) . click ( ) ;
61+ await page . getByRole ( 'button' , { name : 'Select an operand...' } ) . click ( ) ;
62+ await page . getByRole ( 'combobox' , { name : 'Select or create an operand' } ) . fill ( '9000' ) ;
63+ await page . getByRole ( 'combobox' , { name : 'Select or create an operand' } ) . press ( 'Enter' ) ;
64+ await page . getByRole ( 'button' , { name : 'Save' } ) . click ( ) ;
65+
66+ await page . getByRole ( 'listitem' ) . filter ( { hasText : 'Scenarios' } ) . getByRole ( 'link' ) . click ( ) ;
67+
68+ await expect ( page . getByRole ( 'link' , { name : `${ scenarioName } DESC` } ) ) . toBeVisible ( ) ;
69+
70+ await page . getByRole ( 'link' , { name : `${ scenarioName } DESC` } ) . click ( ) ;
71+ await page . getByRole ( 'link' , { name : 'draft' } ) . click ( ) ;
72+
73+ await expect ( page . getByRole ( 'button' , { name : 'edit_operand.operator_type.' } ) ) . toHaveText ( 'amount' ) ;
74+ await expect ( page . getByRole ( 'combobox' ) ) . toHaveText ( '>' ) ;
75+ await expect ( page . getByRole ( 'button' , { name : 'Number 100' } ) ) . toBeVisible ( ) ;
76+ } ) ;
0 commit comments