バージョン選択

フォーラム

メニュー

オンライン状況

18 人のユーザが現在オンラインです。 (11 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 18
もっと...

サイト内検索

その他 > その他 > E2E テスト実行環境

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seasoft
投稿日時: 2024/1/27 18:44
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
E2E テスト実行環境
ローカル PC に、E2E テスト実行環境を構成しようと思います。

$ npx playwright test
You are running Node.js 12.22.9.
Playwright requires Node.js 14 or higher.
Please update your version of Node.js.
$ apt list npm nodejs
Listing... Done
nodejs/jammy-updates,jammy-security,now 12.22.9~dfsg-1ubuntu3.3 amd64 [installed,automatic]
npm/jammy,now 8.5.1~ds-1 all [installed]


nodejs のバージョンを、少なくとも14以上に上げる必要があると理解していますが、実際には最新を追うのが良いのか、どのバージョンを使うべきなどありますか?

また、EC-CUBE のファイル上で、Node.js のバージョン管理ツール向けに、どのバージョンを導入するか定義しているファイルがありましたら教えてください。

EC-CUBE: commit 9e3102f0c91cdc1e882e208e510ffe998ac75dd8 (master)
(Date: Wed Jan 24 16:58:52 2024 +0900)

OS 名 Microsoft Windows 11 Pro
バージョン 10.0.22621 ビルド 22621
WSL バージョン: 2.0.9.0
PRETTY_NAME="Ubuntu 22.04.3 LTS"


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2024/1/28 2:50
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: E2E テスト実行環境の Node.js バージョン
nanasess さんの4系の記事を読みました。
https://zenn.dev/nanasess/articles/ec-cube-plugin-e2etesting-in-10mins

「Node.js 14 以上がインストールされていること」との事で、冒頭に貼ったエラーとも矛盾しなそうですので、とりあえず深く考えず
$ nvm use --lts
Now using node v20.11.0 (npm v10.2.4)

で進めています。

とりあえず、冒頭のエラーは回避できた様子です。


次は、EC-CUBE 実行環境 (Docker?) を別途構成しておく必要がありそうなエラーで躓いていますが、上記の記事も参考に、もう少し試してみようと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2024/1/28 16:48
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: E2E テスト実行環境
以下のような感じで、「RequestError: Error: socket hang up」というエラーが頻発します。
$ docker-compose -f docker-compose.dev.yml -f docker-compose.owaspzap.daemon.yml -f docker-compose.pgsql.yml -f docker-compose.mysql.yml -f docker-compose.owaspzap.yml -f docker-compose.yml up -d
[+] Running 5/5
 ✔ Container ec217-mailcatcher-1  Started                                                                                                        0.2s
 ✔ Container ec217-postgres-1     Started                                                                                                        0.2s
 ✔ Container ec217-mysql-1        Started                                                                                                        0.2s
 ✔ Container ec217-ec-cube-1      Started                                                                                                        0.1s
 ✔ Container ec217-zap-1          Started                                                                                                        0.1s
$ npx playwright test
[@faker-js/faker]: faker.company.companyName() is deprecated since v7.4 and will be removed in v8.0. Please use faker.company.name() instead.
[@faker-js/faker]: faker.fake() is deprecated since v7.4 and will be removed in v8.0. Please use faker.helpers.fake() instead.

Running 164 tests using 4 workers
  1) [chromium] › test/admin/customer/edit.test.ts:13:7 › 会員登録画面のテストをします › 会員登録画面のテストをします ──────────

    RequestError: Error: socket hang up

        at RequestError (/home/xxx/htdocs/ec217/node_modules/request-promise-core/lib/errors.js:14:15)
        at Request.plumbing.callback (/home/xxx/htdocs/ec217/node_modules/request-promise-core/lib/plumbing.js:87:29)
        at Request.RP$callback (/home/xxx/htdocs/ec217/node_modules/request-promise-core/lib/plumbing.js:46:31)
        at self.callback (/home/xxx/htdocs/ec217/node_modules/request/request.js:185:22)
        at Request.onRequestError (/home/xxx/htdocs/ec217/node_modules/request/request.js:877:8)

[5/164] [chromium] › test/admin/customer/edit.test.ts:18:7 › 会員登録画面のテストをします › LC_Page_Admin_Customer_Edit_Ex クラスのテストをします @ext
...


他に、以下のようなエラーも頻発します。
  22) [chromium] › test/installer/installer.test.ts:15:7 › インストーラのテストをします › インストーラを表示します ───────────

    Error: page.goto: net::ERR_EMPTY_RESPONSE at https://ec-cube/install/
    Call log:
      - navigating to "https://ec-cube/install/", waiting until "load"


      10 |     const browser = await chromium.launch();
      11 |     page = await browser.newPage();
    > 12 |     await page.goto(url);
         |                ^
      13 |   });
      14 |
      15 |   test('インストーラを表示します', async () => {

        at /home/xxx/htdocs/ec217/e2e-tests/test/installer/installer.test.ts:12:16

    attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
    test-results/test-installer-installer-インストーラのテストをします-インストーラを表示します-chromium/test-failed-1.png
    ────────────────────────────────────────────────────────────────────────────────────────────────


最後は、以下の文言を表示したまま、進まなくなります。
[157/164] [chromium] › test/installer/installer.test.ts:103:7 › インストーラのテストをします › トップページを確認します



テスト結果のエラーというより、環境構成の不備だと思うのですが、何か分かりましたら教えてください。

なお、Windows 上の Chrome から https://localhost:4430 にアクセスすると、フロント画面が表示されます。
https://localhost:4430/admin/ でログイン画面が表示されます。

test-results/ 以下に保存される PNG 画像は、全て白画面です。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2024/1/28 16:55
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: E2E テスト実行環境
関係あるか分かりませんが、以下の状況です。(WSL の Ubuntu で実行)
$ curl 'https://ec-cube/' --proxy 'http://127.0.0.1:8090' -v
*   Trying 127.0.0.1:8090...
* Connected to (nil) (127.0.0.1) port 8090 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to ec-cube:443
> CONNECT ec-cube:443 HTTP/1.1
> Host: ec-cube:443
> User-Agent: curl/7.81.0
> Proxy-Connection: Keep-Alive
>
* Proxy CONNECT aborted
* CONNECT phase completed!
* Closing connection 0
curl: (56) Proxy CONNECT aborted


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

nanasess
投稿日時: 2024/2/2 10:48
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: E2E テスト実行環境
反応遅れてすみません。E2Eテストは、ペネトレーションテストも兼ねているため、 OWASP ZAP も起動する必要があります。

設定方法は以下を参考にしていただければと思います
https://github.com/EC-CUBE/ec-cube2/tree/master/zap

OWASP ZAP の proxy を使用するため、EC-CUBE の HTTP(S)_URL は 'https://ec-cube' にしておく必要があります。
socket hang up になる場合は、 OWASP ZAP の proxy または API のアクセス許可が正常に設定されていない可能性が高いです。
通常、docker-compose.owaspzap.yml と docker-compose.owaspzap.daemon.yml を指定していれば、自動設定されるのですが。。。

4系の情報ですが、 OWASP ZAP の設定自体は以下の記事が参考になると思います
https://doc4.ec-cube.net/penetration-testing/quick_start


現在、Playwright 自体は、node v16 移行であれば実行可能です。
以下のコマンドでインストールできます


yarn install
yarn run playwright install --with-deps chromium
yarn playwright install-deps chromium


E2Eテストの実行に必要なコマンドは以下 GitHub Actions を参考にしていただくと良いかも。
https://github.com/EC-CUBE/ec-cube2/blob/21c00254ee6a0c039015a572d46c3e3083c49ccd/.github/workflows/e2e-tests.yml#L15-L71

経緯などは以下の PR が参考になると思います
https://github.com/EC-CUBE/ec-cube2/pull/482
seasoft
投稿日時: 2024/2/5 2:11
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: E2E テスト実行環境
有力な情報を教えていただき助かります。
お忙しいところ、ありがとうございます。

EMPTY 応答なのは、https://doc4.ec-cube.net/penetration-testing/quick_start を参考に、以下コマンドを追加実行すると解消されたようです。

$ docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.owaspzap.yml up -d zap
$ curl --insecure 'https://ec-cube/' --proxy 'http://127.0.0.1:8090' -v

何が起きたのか理解に至っていませんが、とりあえず EC-CUBE のフロント画面が応答されました。
また、同様に EMPTY 応答だった、ZAP の WEB コンソールも表示されました。


改めて、yarn playwright test を実行すると、少なくとも一部のテストはパスしている様子でした。
19 failed
117 skipped
28 passed


一部で socket hang up も残っており、不完全だと思いますが、かなり進んだ気がします。
折を見て、調整を試みようと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2024/2/21 10:58
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: E2E テスト実行環境
現況以下のような状況です。
  17 failed
    [chromium] › test/admin/contents/recommendsearch.test.ts:27:7 › おすすめ商品管理を確認します › おすすめ商品管理画面を確認します
    [chromium] › test/admin/customer/edit.test.ts:13:7 › 会員登録画面のテストをします › 会員登録画面のテストをします ===========
    [chromium] › test/admin/home.test.ts:19:7 › 管理画面Homeの確認をします › システム情報を確認します =====================
    [chromium] › test/admin/ownersstore/plugin_install.test.ts:39:7 › プラグイン管理の確認をします › プラグインを作成します =
    [chromium] › test/admin/system/index.test.ts:28:7 › システム設定>メンバー管理画面を確認をします › メンバー管理画面を開きます =====
    [chromium] › test/admin/total/total.test.ts:31:9 › 売上集計画面を確認をします › 期間別集計の確認をします › 期間別集計画面を開きます =
    [chromium] › test/front_guest/shopping.test.ts:32:7 › 購入フロー(ゲスト)のテストをします › 商品一覧を表示します ==========
    [chromium] › test/front_login/cart/cart_delete.test.ts:27:7 › カートページのテストをします › 商品詳細ページを表示します ===
    [chromium] › test/front_login/cart/cart.test.ts:18:7 › カートページのテストをします › カートの内容を確認します ===========
    [chromium] › test/front_login/contact.test.ts:30:7 › お問い合わせページのテストをします › お問い合わせページを表示します =======
    [chromium] › test/front_login/mypage/change.test.ts:13:7 › 会員登録内容変更画面のテストをします › 会員登録内容変更画面のテストをします
    [chromium] › test/front_login/shopping/shopping_complete.test.ts:17:7 › ご注文完了画面のテストをします › ご注文完了画面へ遷移します
    [chromium] › test/front_login/shopping/shopping_confirm.test.ts:17:7 › ご注文確認画面のテストをします › ご注文確認画面へ遷移します
    [chromium] › test/front_login/shopping/shopping_deliv.test.ts:17:7 › お届け先指定画面のテストをします › お届け先指定画面へ遷移します
    [chromium] › test/front_login/shopping/shopping_payment.test.ts:19:7 › お支払方法・お届け時間等の指定画面のテストをします › お支払方法・お届け時間等の指定画面へ遷移します
    [chromium] › test/front_login/shopping.test.ts:31:7 › 購入フロー(ログイン)のテストをします › 商品を表示します ===========
    [chromium] › test/installer/installer.test.ts:36:7 › インストーラのテストをします › step1 - ECサイトの設定をします =====
  82 skipped
  28 passed (11m)


17 failed のうち、16 は「RequestError: Error: socket hang up」です。(一番最後だけ「Test timeout of 600000ms exceeded.」です。)

  1) [chromium] › test/admin/customer/edit.test.ts:13:7 › 会員登録画面のテストをします › 会員登録画面のテストをします ==========

    RequestError: Error: socket hang up

        at new RequestError (/home/****/node_modules/request-promise-core/lib/errors.js:14:15)
        at Request.plumbing.callback (/home/****/node_modules/request-promise-core/lib/plumbing.js:87:29)
        at Request.RP$callback [as _callback] (/home/****/node_modules/request-promise-core/lib/plumbing.js:46:31)
        at self.callback (/home/****/node_modules/request/request.js:185:22)
        at Request.onRequestError (/home/****/node_modules/request/request.js:877:8)


引用:

socket hang up になる場合は、 OWASP ZAP の proxy または API のアクセス許可が正常に設定されていない可能性が高いです。

PROXY は動作している気がするので、API に疑いを向けています。

ZAP の WEB コンソールから、[ツール]-[API一覧] を開くと、新しいタブで http://192.168.240.2:8090 が開きます。

Docker のポート設定からすると http://localhost:8090 が正しいと推測して、開くも ERR_EMPTY_RESPONSE でした。

念のために、コンテナ上で http://192.168.240.2:8090 にアクセスを試みるも以下の状況でした。
$ docker-compose exec zap bash
zap@9fd405b03ea9:/zap$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
742: eth1@if743: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:c0:a8:f0:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.240.2/20 brd 192.168.255.255 scope global eth1
       valid_lft forever preferred_lft forever
744: eth0@if745: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:c0:a8:e0:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.224.5/20 brd 192.168.239.255 scope global eth0
       valid_lft forever preferred_lft forever
zap@9fd405b03ea9:/zap$ lynx http://192.168.240.2:8090/

Looking up 192.168.240.2:8090
Making HTTP connection to 192.168.240.2:8090
Sending HTTP request.
HTTP request sent; waiting for response.
Alert!: Unexpected network read error; connection aborted.
Can't Access `http://192.168.240.2:8090/'
Alert!: Unable to access document.

lynx: Can't access startfile
zap@9fd405b03ea9:/zap$ curl -v http://192.168.240.2:8090/
*   Trying 192.168.240.2:8090...
* Connected to 192.168.240.2 (192.168.240.2) port 8090 (#0)
> GET / HTTP/1.1
> Host: 192.168.240.2:8090
> User-Agent: curl/7.74.0
> Accept: */*
>
* Empty reply from server
* Connection #0 to host 192.168.240.2 left intact
curl: (52) Empty reply from server


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2024/2/21 13:47
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: E2E テスト実行環境
引用:
(一番最後だけ「Test timeout of 600000ms exceeded.」です。)

これは、EC-CUBE 側のバグが絡んでいそうなので、Issue 登録しました。
https://github.com/EC-CUBE/ec-cube2/issues/846


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

nanasess
投稿日時: 2024/2/21 17:41
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2311
Re: E2E テスト実行環境
seasoft
投稿日時: 2024/2/21 20:30
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: E2E テスト実行環境
情報ありがとうございます。

確認しますと、アドレスが「^」になっていました。色々と試す中で、設定を戻し忘れていたようです。
現況で「.*」に変更すると、結果が変わりました。

failed は 15 残っていますが、「RequestError: Error: socket hang up」地獄からは抜け出せたようです。
  15 failed
    [chromium] › test/admin/contents/recommendsearch.test.ts:27:7 › おすすめ商品管理を確認します › おすすめ商品管理画面を確認します
    [chromium] › test/admin/customer/edit.test.ts:13:7 › 会員登録画面のテストをします › 会員登録画面のテストをします ───────────
    [chromium] › test/admin/home.test.ts:19:7 › 管理画面Homeの確認をします › システム情報を確認します ─────────────────────
    [chromium] › test/admin/ownersstore/plugin_install.test.ts:39:7 › プラグイン管理の確認をします › プラグインを作成します ─
    [chromium] › test/admin/total/total.test.ts:55:9 › 売上集計画面を確認をします › 期間別集計の確認をします › 期間集計の確認をします ──
    [chromium] › test/front_guest/shopping.test.ts:105:7 › 購入フロー(ゲスト)のテストをします › お支払い方法・お届け時間の指定をします
    [chromium] › test/front_login/cart/cart_delete.test.ts:39:7 › カートページのテストをします › カートの内容を確認します ────
    [chromium] › test/front_login/cart/cart.test.ts:18:7 › カートページのテストをします › カートの内容を確認します ───────────
    [chromium] › test/front_login/contact.test.ts:48:7 › お問い合わせページのテストをします › ログイン状態を確認します ──────────
    [chromium] › test/front_login/shopping/shopping_complete.test.ts:17:7 › ご注文完了画面のテストをします › ご注文完了画面へ遷移します
    [chromium] › test/front_login/shopping/shopping_confirm.test.ts:17:7 › ご注文確認画面のテストをします › ご注文確認画面へ遷移します
    [chromium] › test/front_login/shopping/shopping_deliv.test.ts:17:7 › お届け先指定画面のテストをします › お届け先指定画面へ遷移します
    [chromium] › test/front_login/shopping/shopping_payment.test.ts:19:7 › お支払方法・お届け時間等の指定画面のテストをします › お支払方法・お届け時間等の指定画面へ遷移します
    [chromium] › test/front_login/shopping.test.ts:48:7 › 購入フロー(ログイン)のテストをします › お届け先の指定をします ────────
    [chromium] › test/installer/installer.test.ts:21:7 › インストーラのテストをします › step0 - パーミッションをチェックします ──
  64 skipped
  48 passed (22.3m)


いくつか調べられそうなものもあるので、分析してみます。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,597名です
総投稿数は109,845件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1622
8
red
1569
9
mcontact
1257
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.