【Day 9】ブログタイトルの固定値を表示する

## はじめに

![スライド10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/eadfac9a-bb1e-d3b0-e2fb-f9097b37be0c.png)

---

**2023年アドベントカレンダー9日目**です。

https://qiita.com/advent-calendar/2023/life-sync-app

前回は「ユーザーはトップページを開くことができる」のストーリーを進めました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/1da0357e-0bef-76cc-d045-61a0da5805c9.png)

今回から「ユーザーはトップページで固定値のブログタイトルを見ることができる」を進めていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/084c5144-d68a-bf61-ec8f-dfaf6e246333.png)

**Web**部分の開発を進めます。

## 画面デザイン

以前Figmaで作成したデザインで進めていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/4619fcee-0a63-e5b0-dd96-1314f59bc174.png)

今回は前回コンポーネント設計をした、`Blogs`コンポーネントを作成していくイメージを持っておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/3434b50c-fb98-082b-64ee-41e8d3ea1fec.png)

## E2Eテスト

前回同様、まずはE2Eテストを書いていきます。

今回はブログの固定タイトルと、固定の作成日時が見えていることが確認できるテストを追加しようと思います。

```diff_javascript:top/display.cy.js
/// <reference types="cypress" />

describe('トップ画面の表示', () => {
  beforeEach(() => {
    cy.visit(cy.config('baseUrl'))
  })

  it('h1タグで"Life Sync"が表示されていること', () => {
    cy.get('h1').should('have.text', 'Life Sync')
  })

  it('h2タグで"ブログ一覧"の文字が表示されていること', () => {
    cy.get('h2').should('have.text', 'ブログ一覧')
  })

  it('"新規登作成"のボタンが表示されていること', () => {
    cy.get('button').should('have.text', '新規作成')
  })

+ it('ブログの固定タイトルが表示されていること', () => {
+   cy.get('.blog-card').eq(0).should('include.text', 'タイトル')
+ })
+
+ it('ブログの固定日付が表示されていること', () => {
+   cy.get('.blog-card').eq(0).should('include.text', '2021/01/01 09:00:00')
+ })
})
```

実行してみます。

```bash
  トップ画面の表示
    1) h1タグで"Life Sync"が表示されていること
    2) h2タグで"ブログ一覧"の文字が表示されていること
    3) "新規登作成"のボタンが表示されていること
    4) ブログのタイトルが表示されていること
    5) ブログの日付が表示されていること


  3 passing
  2 failing
```

:ok: 追加したテストが**失敗**することが確認できました

## 実装

`Blogs`コンポーネントを作成していきます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/3434b50c-fb98-082b-64ee-41e8d3ea1fec.png)

前回同様、まずはテストが通る最低限を目指します。

```tsx:src/components/Blogs.tsx
'use client'

export const Blogs = () => {
  return (
    <div>
      <div>
        タイトル
      </div>
      <div>
        2021/01/01 09:00:00
      </div>
    </div>
  )
}
```

テストを流してみます

```bash
  トップ画面の表示
    1) h1タグで"Life Sync"が表示されていること
    2) h2タグで"ブログ一覧"の文字が表示されていること
    3) "新規登作成"のボタンが表示されていること
    4) ブログのタイトルが表示されていること
    5) ブログの日付が表示されていること


  5 passing
```

通りました！

次にスタイルを当てていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/bf53b2c5-aa8d-e53c-2ffb-6f604778bdf4.png)

:ok: 完成しました！

<details><summary>参考）Blogs.tsx</summary>

```tsx
'use client'

import React from 'react'
import { BsArrowRightCircle } from 'react-icons/bs'

export const Blogs = () => {
  return (
    <div className='flex flex-col gap-4'>
      <div className='flex flex-col blog-card'>
        <div className='bg-stone-100 p-6 rounded-xl flex justify-between items-center'>
          タイトル
          <BsArrowRightCircle size={35} />
        </div>
        <div className='self-end'>2021/01/01 09:00:00</div>
      </div>
    </div>
  )
}
```

</details>



これで「ユーザーはトップページで固定値のブログタイトルを見ることができる」が終了です👍

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/084c5144-d68a-bf61-ec8f-dfaf6e246333.png)

明日からは「ユーザーはトップページでブログタイトルの一覧を見ることができる 」をすすめていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985550/9c0dd56f-8248-a297-1bac-919c8f1bd3c7.png)