0
0

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 1 year has passed since last update.

ItayaAdvent Calendar 2022

Day 24

CypressでE2Eの世界観にほんの少しだけ触れてみた

Last updated at Posted at 2022-12-23

概要

Cypress初めて触ってみる人向けの資料

手順

準備

作業用ディレクトリ作成し移動

mkdir cypress
cd cypress

yarnの初期化

yarn init -y

Cypressのインストール

yarn add cypress

初期設定&起動

yarn run cypress open

E2Eを選択

スクリーンショット 2022-11-11 11.17.40.png
スクリーンショット 2022-11-11 11.17.46.png

Chromeを選択

スクリーンショット 2022-11-11 11.17.53.png

空のspecを作成

スクリーンショット 2022-11-11 11.43.25.png
スクリーンショット 2022-11-11 11.43.38.png

勝手に実行される

スクリーンショット 2022-11-11 11.44.11.png

コーディングに関して

コーディング方法

今まで画面上でぽちぽちしていたのですが、じゃあどうやって実際のテストとか書いてくねん??って話なんですけど。
作成したディレクトリの中にcypress/e2e/というディレクトリがあり、そこを書き換えることで好きにコードが書けます。

ターミナルでの実行方法

下記のような形でファイルを指定することで実行できます。
ただ、GUIが充実しているのでそっちで実行の方がいい気がします。
コード編集したら自動でまた流れてくれますし。

yarn run cypress run --spec cypress/e2e/test.cy.js

出力

ターミナル実行の場合ログの出力をしたくなるとおもうので紹介
cypress.config.jsを下記のように書き換え

const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('task', {
        log(message) {
          console.log(message)
          return null
        },
      })
    },
  }
})

テストコードの中では

cy.task('log', '出力したいもの')

という形で出力できます。

実例紹介

あとはもう、実例みて行った方が早い気がするので色々載せます

Google 検索のコード

describe('empty spec', () => {
  it('Googleで検索', () => {
    cy.visit('https://www.google.com/?hl=ja')
    cy.get('input').eq(0).type('綾瀬 居酒屋 食べログ{enter}')
    // 見出しを出力
    cy.get('h3').each(h3 => {
      cy.task('log', h3.text())
    })
  })
})

出力

綾瀬駅でおすすめの美味しい居酒屋をご紹介! - 食べログ
綾瀬で人気の居酒屋 ランキングTOP20 - 食べログ
綾瀬でおすすめの美味しい居酒屋をご紹介! - 食べログ
足立区綾瀬でおすすめの美味しい居酒屋をご紹介! - 食べログ
千住・綾瀬・葛飾で人気の居酒屋 ランキングTOP20 - 食べログ
綾瀬駅でおすすめのグルメ情報をご紹介! | 食べログ
綾瀬駅でランチに使える居酒屋 ランキング | 食べログ
綾瀬市でおすすめの美味しい居酒屋をご紹介! - 食べログ
【個室あり】綾瀬駅でおすすめの居酒屋をご紹介! - 食べログ
綾瀬のグルメ・レストランガイド - 食べログ

Google検索結果のテスト

E2Eの記事なのにスクレイピングっぽいのだけでは怒られそうなので

describe('empty spec', () => {
  it('Google検索で食べログのページが1件目に表示される', () => {
    cy.visit('https://www.google.com/?hl=ja')
    cy.get('input').eq(0).type('綾瀬 居酒屋 食べログ{enter}')
    cy.get('h3').eq(0).should('have.text', '綾瀬駅でおすすめの美味しい居酒屋をご紹介! - 食べログ')
  })
})

出力

    ✓ Google検索で食べログのページが1件目に表示される (5587ms)


  1 passing (7s)


  (Results)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Tests:        1                                                                                │
  │ Passing:      1                                                                                │
  │ Failing:      0                                                                                │
  │ Pending:      0                                                                                │
  │ Skipped:      0                                                                                │
  │ Screenshots:  0                                                                                │
  │ Video:        true                                                                             │
  │ Duration:     6 seconds                                                                        │
  │ Spec Ran:     google-search-test.cy.js                                                         │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?