Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
374a8f6
chore: gitignore 추가
ldhldh07 Aug 25, 2025
616398c
feat: server.js 교체
ldhldh07 Aug 25, 2025
54c1b7b
test: 데일리 정기 알림 테스트 작성
ldhldh07 Aug 26, 2025
77a5b73
feat: 데일리 정기 알림 기능 구현
ldhldh07 Aug 26, 2025
ae519a2
feat: 반복 이벤트 확장 함수 개발
ldhldh07 Aug 26, 2025
7f811a4
test: 주간 정기 알람 생성 테스트 코드 작성
ldhldh07 Aug 26, 2025
490ee56
feat: 다음주 이벤트 발생 함수 생성
ldhldh07 Aug 26, 2025
39c6d9a
refactor: utcDate 변환 함수 분리
ldhldh07 Aug 26, 2025
53c9480
test: 주간 이벤트 확장 함수 테스트 코드 작성
ldhldh07 Aug 26, 2025
316a383
feat: 주간 이벤트 확장 함수 추가
ldhldh07 Aug 26, 2025
67a6937
test: 윤년시 다음 윤년 반환 테스트 작성
ldhldh07 Aug 26, 2025
28cecde
feat: 윤년 로직 구현
ldhldh07 Aug 26, 2025
7e1ac7a
refactor: 윤년 함수 순수 함수 분리 및 즉시실행함수 제거
ldhldh07 Aug 26, 2025
795346c
test: 윤년 연간 알림 처리 테스트 작성
ldhldh07 Aug 26, 2025
29f3725
feat: 윤년 연간 알림 처리 기능 구현
ldhldh07 Aug 26, 2025
81f5c0c
refactor: utc 날짜로 변환
ldhldh07 Aug 26, 2025
a8afe0f
test: 주간 범위내에서만 daily 인스턴스를 생성한다 테스트 작성
ldhldh07 Aug 26, 2025
b126300
feat: 주간 범위 내에서만 daily 인스턴스를 개발한다 구현
ldhldh07 Aug 26, 2025
9185a23
refactor: UTCdate 추가 로직 및 인스턴스 생성 빌더 분리
ldhldh07 Aug 26, 2025
cb1f884
test: 주간 범위 내에서만 주간 인스턴스 생성 테스트
ldhldh07 Aug 27, 2025
3bb9549
feat: 주간 인스턴스 생성 함수 구현
ldhldh07 Aug 27, 2025
53d4ef3
refactor: 범위 확인 순수 함수 분리
ldhldh07 Aug 27, 2025
2afd6b1
test: 31일 건너뛰기 테스트 추가
ldhldh07 Aug 27, 2025
3cb9b09
feat: 다음 31일 탐색하는 함수 개발
ldhldh07 Aug 27, 2025
c256a87
refactor: 다음 월 index 찾는 함수 분리
ldhldh07 Aug 27, 2025
62ac3b7
refactor: 다음 월 추출 탐색 함수 분리
ldhldh07 Aug 27, 2025
6b54129
test: 연간 반복일정의 경우 윤년에만 인스턴스 생성
ldhldh07 Aug 27, 2025
dbf9b54
feat: 연간 반복 일정 기능 구현
ldhldh07 Aug 27, 2025
09f4159
refactor: 최소 interval 설정 로직 분리
ldhldh07 Aug 27, 2025
7f9c747
refactor: date 타입 utc 문자만 추출하는 함수 추가
ldhldh07 Aug 27, 2025
dfba44c
test: 인스턴스 상한 테스트
ldhldh07 Aug 27, 2025
2a5ddb1
feat: 이벤트 반복로직 적용
ldhldh07 Aug 27, 2025
74b62d2
test: 범위 내 월간 반복 일정 생성 테스트
ldhldh07 Aug 27, 2025
5fa7624
test: 반복 ui 표시 통합테스트 추가
ldhldh07 Aug 27, 2025
497930f
feat: 반복 기본 ui 출력 테스트
ldhldh07 Aug 27, 2025
1abdaa2
test: 반복 일정 저장시 아이콘 표시 테스트
ldhldh07 Aug 27, 2025
a014e64
feat: 일정 반복 아이콘 추가
ldhldh07 Aug 27, 2025
65c1641
test: 단일 일정으로 수정시 아이콘 삭제 테스트 작성
ldhldh07 Aug 27, 2025
07d4986
test: 월별 뷰 윤년 테스트
ldhldh07 Aug 28, 2025
612872f
feat: 월별 뷰 윤년 테스트
ldhldh07 Aug 28, 2025
804ed10
refactor: 폴더구조 수정
ldhldh07 Aug 28, 2025
4145f4b
refactor: 추상화 계층에 따라 폴더구조 분리
ldhldh07 Aug 28, 2025
4710941
refactor: 통합 테스트 분리
ldhldh07 Aug 28, 2025
325b019
test: 엣지 케이스 테스트 구현
ldhldh07 Aug 28, 2025
ab05ca9
refactor: 엣지 케이스 레이어 분리
ldhldh07 Aug 28, 2025
f97b684
chore: 플레이라이트 추가
ldhldh07 Aug 28, 2025
090e80a
test: 아이콘 표시 테스트 수정
ldhldh07 Aug 28, 2025
ea3f539
feat: 반복 일정 아이콘 구현
ldhldh07 Aug 28, 2025
5d12d8d
refactor: 체크 해제시 리셋하는 핸들러 분리
ldhldh07 Aug 28, 2025
b2d6dff
test: 단일 일정 삭제시 해당 일정만 삭제 테스트
ldhldh07 Aug 28, 2025
188e10e
feat: 삭제시 단일 이벤트 삭제 기능 구현
ldhldh07 Aug 28, 2025
2eaa215
fix: 단일 일정 반복 해제시 전체 일정 사라지는 이슈
ldhldh07 Aug 28, 2025
26759e8
test: 일정 생성 e2e 테스트 작성
ldhldh07 Aug 28, 2025
a31be74
test: 삭제 e2e 테스트 추가
ldhldh07 Aug 28, 2025
f30c6fb
test: vitest 러너 충동 오류 해결
ldhldh07 Aug 28, 2025
39e211b
chore: import문 순서 수정
ldhldh07 Aug 28, 2025
4340080
chore: 플레이라이트 설정 수정
ldhldh07 Aug 28, 2025
4d22d73
chore: e2e테스트 확장자 수정
ldhldh07 Aug 28, 2025
6c76be5
chore: test에 exclude 제거
ldhldh07 Aug 28, 2025
79e4fa0
chore: ci 워크플로우 추가
ldhldh07 Aug 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,26 @@ jobs:
- name: test basic
run: |
pnpm install
pnpm run test
pnpm run test

e2e:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- uses: pnpm/action-setup@v4
with:
version: latest
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Playwright browsers
run: pnpm exec playwright install --with-deps
- name: Run Playwright tests
run: pnpm e2e
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,10 @@
.vscode
node_modules
.coverage
docs/

# Playwright
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
8 changes: 7 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@
"server:watch": "node --watch server.js",
"start": "vite",
"dev": "concurrently \"pnpm run server:watch\" \"pnpm run start\"",
"test": "vitest",
"test": "vitest --run",
"test:ui": "vitest --ui",
"test:coverage": "vitest run --coverage",
"e2e": "playwright test",
"e2e:ui": "playwright test --ui",
"e2e:headed": "playwright test --headed",
"e2e:debug": "playwright test --debug",
"build": "tsc -b && vite build",
"lint:eslint": "eslint . --ext ts,tsx --report-unused-disable-directives",
"lint:tsc": "tsc --pretty",
Expand All @@ -30,9 +34,11 @@
},
"devDependencies": {
"@eslint/js": "9.33.0",
"@playwright/test": "1.55.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^14.5.2",
"@types/node": "24.3.0",
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
"@typescript-eslint/eslint-plugin": "^8.35.0",
Expand Down
71 changes: 71 additions & 0 deletions playwright.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { defineConfig, devices } from '@playwright/test';

/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
// import dotenv from 'dotenv';
// import path from 'path';
// dotenv.config({ path: path.resolve(__dirname, '.env') });

/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
testDir: './src/__tests__/repeat/e2e',
testMatch: ['**/*.e2e.ts', '**/*.e2e.tsx', '**/*.spec.ts'],
/* Run tests in files in parallel */
fullyParallel: true,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
/* Retry on CI only */
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: 'html',
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. */
baseURL: 'http://localhost:5173',

/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: 'on-first-retry',
},

/* Configure projects for major browsers */
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},

/* Test against mobile viewports. */
// {
// name: 'Mobile Chrome',
// use: { ...devices['Pixel 5'] },
// },
// {
// name: 'Mobile Safari',
// use: { ...devices['iPhone 12'] },
// },

/* Test against branded browsers. */
// {
// name: 'Microsoft Edge',
// use: { ...devices['Desktop Edge'], channel: 'msedge' },
// },
// {
// name: 'Google Chrome',
// use: { ...devices['Desktop Chrome'], channel: 'chrome' },
// },
],

/* Run your local dev server before starting the tests */
webServer: {
command: 'pnpm dev',
url: 'http://localhost:5173',
reuseExistingServer: !process.env.CI,
timeout: 120_000,
},
});
Loading
Loading