Skip to content

Commit def4236

Browse files
authored
Merge pull request #15 from cobocho/codex/fix/main-api-e2e-workflow
ci(e2e): main에서 API 변경분만 조건부 실행
2 parents d5ac81d + 312a6da commit def4236

1 file changed

Lines changed: 183 additions & 0 deletions

File tree

.github/workflows/e2e-api-main.yml

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
name: E2E By API Changes (main)
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
detect-changes:
13+
runs-on: ubuntu-latest
14+
outputs:
15+
any_changed: ${{ steps.any.outputs.value }}
16+
map: ${{ steps.filter.outputs.map }}
17+
marker: ${{ steps.filter.outputs.marker }}
18+
infowindow: ${{ steps.filter.outputs.infowindow }}
19+
panorama: ${{ steps.filter.outputs.panorama }}
20+
circle: ${{ steps.filter.outputs.circle }}
21+
ellipse: ${{ steps.filter.outputs.ellipse }}
22+
rectangle: ${{ steps.filter.outputs.rectangle }}
23+
polygon: ${{ steps.filter.outputs.polygon }}
24+
groundoverlay: ${{ steps.filter.outputs.groundoverlay }}
25+
markerclusterer: ${{ steps.filter.outputs.markerclusterer }}
26+
geojson: ${{ steps.filter.outputs.geojson }}
27+
gpx: ${{ steps.filter.outputs.gpx }}
28+
kmz: ${{ steps.filter.outputs.kmz }}
29+
steps:
30+
- name: Checkout
31+
uses: actions/checkout@v4
32+
with:
33+
fetch-depth: 0
34+
35+
- name: Filter changed API source files
36+
id: filter
37+
uses: dorny/paths-filter@v3
38+
with:
39+
filters: |
40+
map:
41+
- 'packages/react-naver-maps-kit/src/react/components/NaverMap.tsx'
42+
- 'packages/react-naver-maps-kit/src/react/provider/NaverMapProvider.tsx'
43+
- 'packages/react-naver-maps-kit/src/react/context/MapInstanceContext.tsx'
44+
- 'packages/react-naver-maps-kit/src/react/hooks/useNaverMap.ts'
45+
- 'packages/react-naver-maps-kit/src/core/loader/loadNaverMapsScript.ts'
46+
marker:
47+
- 'packages/react-naver-maps-kit/src/overlays/marker/**'
48+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
49+
infowindow:
50+
- 'packages/react-naver-maps-kit/src/overlays/infowindow/**'
51+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
52+
panorama:
53+
- 'packages/react-naver-maps-kit/src/submodules/panorama/**'
54+
circle:
55+
- 'packages/react-naver-maps-kit/src/overlays/circle/**'
56+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
57+
ellipse:
58+
- 'packages/react-naver-maps-kit/src/overlays/ellipse/**'
59+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
60+
rectangle:
61+
- 'packages/react-naver-maps-kit/src/overlays/rectangle/**'
62+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
63+
polygon:
64+
- 'packages/react-naver-maps-kit/src/overlays/polygon/**'
65+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
66+
groundoverlay:
67+
- 'packages/react-naver-maps-kit/src/overlays/ground-overlay/**'
68+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
69+
markerclusterer:
70+
- 'packages/react-naver-maps-kit/src/overlays/marker-clusterer/**'
71+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
72+
geojson:
73+
- 'packages/react-naver-maps-kit/src/overlays/data/GeoJson.tsx'
74+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
75+
gpx:
76+
- 'packages/react-naver-maps-kit/src/overlays/data/Gpx.tsx'
77+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
78+
kmz:
79+
- 'packages/react-naver-maps-kit/src/overlays/data/Kmz.tsx'
80+
- 'packages/react-naver-maps-kit/src/overlays/shared/**'
81+
82+
- name: Set any_changed output
83+
id: any
84+
run: |
85+
if [ "${{ steps.filter.outputs.changes }}" = "[]" ]; then
86+
echo "value=false" >> "$GITHUB_OUTPUT"
87+
else
88+
echo "value=true" >> "$GITHUB_OUTPUT"
89+
fi
90+
91+
run-e2e:
92+
runs-on: ubuntu-latest
93+
needs: detect-changes
94+
if: needs.detect-changes.outputs.any_changed == 'true'
95+
timeout-minutes: 60
96+
steps:
97+
- name: Checkout
98+
uses: actions/checkout@v4
99+
100+
- name: Setup pnpm
101+
uses: pnpm/action-setup@v4
102+
103+
- name: Setup Node.js
104+
uses: actions/setup-node@v4
105+
with:
106+
node-version: 20
107+
cache: pnpm
108+
109+
- name: Install dependencies
110+
run: pnpm install --frozen-lockfile
111+
112+
- name: Install Playwright browser
113+
run: pnpm -C packages/react-naver-maps-kit e2e:install
114+
115+
- name: E2E map
116+
if: needs.detect-changes.outputs.map == 'true'
117+
run: pnpm -C packages/react-naver-maps-kit e2e:map
118+
119+
- name: E2E marker
120+
if: needs.detect-changes.outputs.marker == 'true'
121+
run: pnpm -C packages/react-naver-maps-kit e2e:marker
122+
123+
- name: E2E infowindow
124+
if: needs.detect-changes.outputs.infowindow == 'true'
125+
run: pnpm -C packages/react-naver-maps-kit e2e:infowindow
126+
127+
- name: E2E panorama
128+
if: needs.detect-changes.outputs.panorama == 'true'
129+
run: pnpm -C packages/react-naver-maps-kit e2e:panorama
130+
131+
- name: E2E circle
132+
if: needs.detect-changes.outputs.circle == 'true'
133+
run: pnpm -C packages/react-naver-maps-kit e2e:circle
134+
135+
- name: E2E ellipse
136+
if: needs.detect-changes.outputs.ellipse == 'true'
137+
run: pnpm -C packages/react-naver-maps-kit e2e:ellipse
138+
139+
- name: E2E rectangle
140+
if: needs.detect-changes.outputs.rectangle == 'true'
141+
run: pnpm -C packages/react-naver-maps-kit e2e:rectangle
142+
143+
- name: E2E polygon
144+
if: needs.detect-changes.outputs.polygon == 'true'
145+
run: pnpm -C packages/react-naver-maps-kit e2e:polygon
146+
147+
- name: E2E groundoverlay
148+
if: needs.detect-changes.outputs.groundoverlay == 'true'
149+
run: pnpm -C packages/react-naver-maps-kit e2e:groundoverlay
150+
151+
- name: E2E markerclusterer
152+
if: needs.detect-changes.outputs.markerclusterer == 'true'
153+
run: pnpm -C packages/react-naver-maps-kit e2e:cluster
154+
155+
- name: E2E geojson
156+
if: needs.detect-changes.outputs.geojson == 'true'
157+
run: pnpm -C packages/react-naver-maps-kit e2e:geojson
158+
159+
- name: E2E gpx
160+
if: needs.detect-changes.outputs.gpx == 'true'
161+
run: pnpm -C packages/react-naver-maps-kit e2e:gpx
162+
163+
- name: E2E kmz
164+
if: needs.detect-changes.outputs.kmz == 'true'
165+
run: pnpm -C packages/react-naver-maps-kit e2e:kmz
166+
167+
- name: Upload Playwright report
168+
if: always()
169+
uses: actions/upload-artifact@v4
170+
with:
171+
name: playwright-report-${{ github.run_id }}
172+
path: |
173+
packages/react-naver-maps-kit/playwright-report
174+
packages/react-naver-maps-kit/test-results
175+
retention-days: 14
176+
177+
no-api-changes:
178+
runs-on: ubuntu-latest
179+
needs: detect-changes
180+
if: needs.detect-changes.outputs.any_changed != 'true'
181+
steps:
182+
- name: Skip
183+
run: echo "No API runtime source changes detected. E2E tests are skipped."

0 commit comments

Comments
 (0)