enbu 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,9 +6,11 @@ Webブラウザ向けのシンプルなE2Eテストフレームワーク。YAML
6
6
 
7
7
  ## 特徴
8
8
 
9
- - **YAMLベースのフロー定義** - 人間が読みやすいシンプルな形式でテストを記述
9
+ - **YAMLで読みやすいステップ定義** - 人間が読みやすいシンプルな形式でテストを記述
10
10
  - **セマンティックな要素指定** - テキスト、ARIAロール、ラベル等で要素を特定
11
11
  - **自動待機** - 要素が現れるまで自動的に待機(明示的なsleep不要)
12
+ - **Headless/Headed両対応** - CI/CDでの自動実行も、目視でのデバッグも可能
13
+ - **失敗時のデバッグ継続** - テスト失敗時にブラウザ状態を保持したままデバッグ開始可能(AIに調査を依頼することも可能)
12
14
  - **agent-browser統合** - Rust製の高速ブラウザ自動化エンジンを利用
13
15
 
14
16
  ## 前提条件
@@ -36,25 +38,25 @@ npx enbu
36
38
  npx enbu init
37
39
  ```
38
40
 
39
- これにより `.abflow/` ディレクトリとサンプルフローが作成されます。
41
+ これにより `.enbuflow/` ディレクトリとサンプルフローが作成されます。
40
42
 
41
43
  ### 2. フローの作成
42
44
 
43
- `.abflow/login.enbu.yaml`:
45
+ `.enbuflow/login.enbu.yaml`:
44
46
 
45
47
  ```yaml
46
48
  # ログインフローのテスト
47
49
  steps:
48
50
  - open: https://example.com/login
49
- - click: "ログイン"
50
- - type:
51
- selector: "メールアドレス"
52
- text: "user@example.com"
53
- - type:
54
- selector: "パスワード"
55
- text: "password123"
56
- - click: "送信"
57
- - assertVisible: "ダッシュボード"
51
+ - click: ログイン
52
+ - fill:
53
+ selector: メールアドレス
54
+ value: user@example.com
55
+ - fill:
56
+ selector: パスワード
57
+ value: password123
58
+ - click: 送信
59
+ - assertVisible: ダッシュボード
58
60
  ```
59
61
 
60
62
  ### 3. テストの実行
@@ -64,7 +66,7 @@ steps:
64
66
  npx enbu
65
67
 
66
68
  # 特定のフローを実行
67
- npx enbu .abflow/login.enbu.yaml
69
+ npx enbu .enbuflow/login.enbu.yaml
68
70
  ```
69
71
 
70
72
  ## コマンドリファレンス
@@ -81,20 +83,37 @@ steps:
81
83
  ```yaml
82
84
  steps:
83
85
  # セマンティックセレクタ(テキスト、ラベル、ARIAロール等)
84
- - click: "ログイン"
86
+ - click: ログイン
85
87
 
86
88
  # CSSセレクタ
87
- - click:
88
- selector: "#submit-button"
89
+ - click: "#submit-button"
90
+ - click: "[data-testid='add-to-cart']"
89
91
  ```
90
92
 
91
93
  ### テキスト入力
92
94
 
93
95
  ```yaml
94
96
  steps:
97
+ # fill: 入力欄をクリアしてから入力
98
+ - fill:
99
+ selector: ユーザー名
100
+ value: 山田太郎
101
+
102
+ # type: 既存テキストに追記
95
103
  - type:
96
- selector: "ユーザー名"
97
- text: "山田太郎"
104
+ selector: 検索欄
105
+ value: 追加テキスト
106
+ ```
107
+
108
+ ### キー入力
109
+
110
+ ```yaml
111
+ steps:
112
+ # Enterキーを押す
113
+ - press: Enter
114
+
115
+ # Tabキーを押す
116
+ - press: Tab
98
117
  ```
99
118
 
100
119
  ### アサーション
@@ -102,33 +121,87 @@ steps:
102
121
  ```yaml
103
122
  steps:
104
123
  # 要素が表示されていることを確認
105
- - assertVisible: "ログイン成功"
124
+ - assertVisible: ログイン成功
106
125
 
107
126
  # 要素が表示されていないことを確認
108
- - assertNotVisible: "エラー"
127
+ - assertNotVisible: エラー
128
+
129
+ # 要素が有効であることを確認
130
+ - assertEnabled: 送信ボタン
131
+
132
+ # チェックボックスがチェックされていることを確認
133
+ - assertChecked: 利用規約に同意
134
+
135
+ # チェックボックスがチェックされていないことを確認
136
+ - assertChecked:
137
+ selector: オプション
138
+ checked: false
109
139
  ```
110
140
 
111
141
  ### スクリーンショット
112
142
 
113
143
  ```yaml
114
144
  steps:
145
+ # 通常のスクリーンショット
115
146
  - screenshot: ./screenshots/result.png
147
+
148
+ # フルページスクリーンショット
149
+ - screenshot:
150
+ path: ./screenshots/fullpage.png
151
+ full: true
116
152
  ```
117
153
 
118
154
  ### スナップショット(デバッグ用)
119
155
 
120
156
  ```yaml
121
157
  steps:
122
- - snapshot
158
+ - snapshot: {}
123
159
  ```
124
160
 
125
161
  現在のページのアクセシビリティツリーを取得します。デバッグ時に要素の確認に使用します。
126
162
 
163
+ ### スクロール
164
+
165
+ ```yaml
166
+ steps:
167
+ # 方向を指定してスクロール
168
+ - scroll:
169
+ direction: down
170
+ amount: 500
171
+
172
+ # 要素が見えるまでスクロール
173
+ - scrollIntoView: フッター
174
+ ```
175
+
176
+ ### 待機
177
+
178
+ ```yaml
179
+ steps:
180
+ # ミリ秒で待機
181
+ - wait: 2000
182
+
183
+ # 要素が表示されるまで待機
184
+ - wait:
185
+ selector: "#loading-complete"
186
+
187
+ # テキストが表示されるまで待機
188
+ - wait:
189
+ text: 読み込み完了
190
+
191
+ # URLが変わるまで待機
192
+ - wait:
193
+ url: /dashboard
194
+
195
+ # ページ読み込み状態を待機
196
+ - wait:
197
+ load: networkidle
198
+ ```
199
+
127
200
  ### JavaScript実行
128
201
 
129
202
  ```yaml
130
203
  steps:
131
- - eval: "document.title"
204
+ - eval: document.title
132
205
 
133
206
  # 複数行
134
207
  - eval: |
@@ -142,9 +215,9 @@ steps:
142
215
 
143
216
  ```yaml
144
217
  steps:
145
- - type:
146
- selector: "パスワード"
147
- text: ${PASSWORD}
218
+ - fill:
219
+ selector: パスワード
220
+ value: ${PASSWORD}
148
221
  ```
149
222
 
150
223
  ### 環境変数の指定方法
@@ -157,7 +230,7 @@ npx enbu --env PASSWORD=secret123
157
230
 
158
231
  #### YAML内で定義
159
232
 
160
- `.abflow/login.enbu.yaml`:
233
+ `.enbuflow/login.enbu.yaml`:
161
234
  ```yaml
162
235
  env:
163
236
  BASE_URL: https://staging.example.com
@@ -172,19 +245,22 @@ npx enbu [options] [flow-files...]
172
245
 
173
246
  オプション:
174
247
  --headed ブラウザを表示して実行(デフォルト: ヘッドレス)
175
- --env KEY=VALUE 環境変数を設定
248
+ --env KEY=VALUE 環境変数を設定(複数回指定可)
176
249
  --timeout <ms> デフォルトタイムアウト(デフォルト: 30000)
177
250
  --screenshot 失敗時にスクリーンショットを保存
251
+ --bail 最初の失敗時にテストを停止
252
+ --session <name> agent-browserのセッション名を指定
253
+ --parallel <N> N個のフローを並列実行
178
254
  -v, --verbose 詳細なログを出力
179
255
  -h, --help ヘルプを表示
180
- --version バージョンを表示
256
+ -V, --version バージョンを表示
181
257
  ```
182
258
 
183
259
  ## ディレクトリ構成
184
260
 
185
261
  ```
186
262
  your-project/
187
- ├── .abflow/
263
+ ├── .enbuflow/
188
264
  │ ├── login.enbu.yaml
189
265
  │ ├── checkout.enbu.yaml
190
266
  │ └── shared/
@@ -236,8 +312,8 @@ jobs:
236
312
  | `click <selector>` | ✅ | `- click: <selector>` |
237
313
  | `dblclick <selector>` | ❌ | - |
238
314
  | `focus <selector>` | ❌ | - |
239
- | `type <selector> <text>` | ✅ | `- type: { selector: <selector>, value: <text> }` |
240
- | `fill <selector> <text>` | ✅ | `- fill: { selector: <selector>, value: <text> }` |
315
+ | `type <selector> <text>` | ✅ | `- type: { selector: <selector>, value: <value> }` |
316
+ | `fill <selector> <text>` | ✅ | `- fill: { selector: <selector>, value: <value> }` |
241
317
  | `press <key>` | ✅ | `- press: <key>` |
242
318
  | `keydown <key>` | ❌ | - |
243
319
  | `keyup <key>` | ❌ | - |
@@ -249,9 +325,9 @@ jobs:
249
325
  | `scrollintoview <selector>` | ✅ | `- scrollIntoView: <selector>` |
250
326
  | `drag <source> <target>` | ❌ | - |
251
327
  | `upload <selector> <files>` | ❌ | - |
252
- | `screenshot [path]` | ✅ | `- screenshot: <path>` |
328
+ | `screenshot [path]` | ✅ | `- screenshot: <path>` または `{ path: <path>, full: true }` |
253
329
  | `pdf <path>` | ❌ | - |
254
- | `snapshot` | ✅ | `- snapshot` |
330
+ | `snapshot` | ✅ | `- snapshot: {}` |
255
331
  | `eval <js>` | ✅ | `- eval: <script>` |
256
332
  | `close` | ❌ | - |
257
333