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 +109 -33
- package/dist/main.mjs +6310 -3951
- package/dist/main.mjs.map +1 -1
- package/package.json +6 -6
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
|
-
これにより `.
|
|
41
|
+
これにより `.enbuflow/` ディレクトリとサンプルフローが作成されます。
|
|
40
42
|
|
|
41
43
|
### 2. フローの作成
|
|
42
44
|
|
|
43
|
-
`.
|
|
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
|
-
-
|
|
51
|
-
selector:
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
selector:
|
|
55
|
-
|
|
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 .
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
-
|
|
146
|
-
selector:
|
|
147
|
-
|
|
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
|
-
`.
|
|
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
|
-
├── .
|
|
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: <
|
|
240
|
-
| `fill <selector> <text>` | ✅ | `- fill: { selector: <selector>, value: <
|
|
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
|
|