2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CI - Webpush Testing Service

Last updated at Posted at 2018-10-05

webpush の送信を機械的にテストするための webpush-testing-service を作成した。

関連サービス GoogleChromeLabs/web-push-testing-service

サービス設計

webpush-testing-service.png

API で selenium の操作を行い push service からの PushSubscription を得たり、 service worker に届いたメッセージを取得できるようにする。

テストコードは PushSubscription を得てエンドポイントに対してメッセージ送信を行い、いつかメッセージが取得できるという感じにすることで、実際に firefox または chrome で動作することが機械的に確認できるようになる。

実装

Selenium

selenium を使って webpush のテストをする場合、通知の許可ボタンが出るのを抑制しなければらない。

val options = new FirefoxOptions()
options.addPreference("permissions.default.desktop-notification", 1)
new FirefoxDriver(options)

firefox では permissions.default.desktop-notification を設定し、

val options = new ChromeOptions()
options.setExperimentalOption("prefs", Map("profile.default_content_setting_values.notifications" -> 1).asJava)
new ChromeDriver(options)

chrome では profile.default_content_setting_values.notifications を設定することで抑制できる。

Docker + Xvfb

ローカルで動かすだけであれば chromedriver や geckodriver と各ブラウザをインストールすれば良いが docker で動くようになっていた方が利便性が高い。

nokamoto13/webdriver

docker 上で selenium を動かすには xvfb と chrome/firefox などのブラウザと chromedriver/geckodriver などのドライバーが必要となる。

#!/bin/sh
xvfb-run $@
ENTRYPOINT [ "./entrypoint.sh", "webpush-testing-service/bin/webpush-testing-service" ]

あとは Dockerfilexvfb-run を利用してサーバーを立ち上げれば良い。
:question: 直接 ENTRYPOINT["xvfb-run", "webpush-testing-service/bin/webpush-testing-service"] とすると動かなかった )

.circleci/config.yml

webpush-testing-service:
  docker:
    - image: nokamoto13/webpush-testing-service:0.0.0
  steps:
    - run:
        command: xvfb-run /webpush-testing-service/bin/webpush-testing-service
        background: yes
    - run:
        command: sbt test

.circleci/config.yml では background で xvfb-run を実行することでテストができた。

jobs:
  build:
    docker:
      - image: circleci/golang:1.11
      - image: nokamoto13/webpush-testing-service:0.0.0

あるいは secondary image としてセットすることで localhost:9000 でアクセスしてテストすることができた。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?