Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 7 additions & 3 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '20'
node-version: '25.7.0'
- name: Install dependencies
run: npm ci
- name: Run prettier
Expand All @@ -25,7 +25,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '20'
node-version: '25.7.0'
- name: Install dependencies
run: npm ci
- name: Run eslint
Expand All @@ -40,7 +40,7 @@ jobs:
# - name: Set up Node.js
# uses: actions/setup-node@v6
# with:
# node-version: '20'
# node-version: '25.7.0'
# - name: Install dependencies
# run: npm ci
# - name: Run unit tests
Expand All @@ -52,6 +52,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '25.7.0'
- name: Install dependencies
run: npm ci
- name: Execute API tests
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22
25.7.0
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:22-alpine AS base
FROM node:25.7.0-alpine AS base

# Install dependencies only when needed
FROM base AS deps
Expand Down
8 changes: 8 additions & 0 deletions app/components/icons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ export const CyborgTestIcon: FC<IconSvgProps> = ({ size = 40, width, height, ...
);
};

export const SlackIcon: FC<IconSvgProps> = ({ size = 40, width, height, ...props }) => {
return (
<svg fill="currentColor" height={size || height} viewBox="0 0 24 24" width={size || width} {...props}>
<path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.521-2.523 2.526 2.526 0 0 1 2.521-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z" />
</svg>
);
};

export const TelegramIcon: FC<IconSvgProps> = ({ size = 40, width, height, ...props }) => {
return (
<svg fill="none" height={size || height} viewBox="0 0 24 24" width={size || width} {...props}>
Expand Down
21 changes: 15 additions & 6 deletions app/lib/storage/fs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,19 +219,28 @@
await createDirectoriesIfMissing();
const entries = await fs.readdir(REPORTS_FOLDER, { withFileTypes: true, recursive: true });

const reportEntries = entries
.filter((entry) => !entry.isDirectory() && entry.name === 'index.html' && !(entry as any).path.endsWith('trace'))
.filter((entry) => (input?.ids ? input.ids.some((id) => (entry as any).path.includes(id)) : entry))
.filter((entry) => (input?.project ? (entry as any).path.includes(input.project) : entry));
const reportEntries = entries.filter((entry) => {
const entryPath = (entry as any).path ?? (entry as any).parentPath;
return (

Check warning on line 224 in app/lib/storage/fs.ts

View workflow job for this annotation

GitHub Actions / eslint

Expected blank line before this statement
!entry.isDirectory() &&
entry.name === 'index.html' &&
entryPath != null &&
!entryPath.endsWith('trace') &&
(input?.ids ? input.ids.some((id: string) => entryPath.includes(id)) : true) &&
(input?.project ? entryPath.includes(input.project) : true)
);
});

const stats = await processBatch<Dirent, Stats & { filePath: string; createdAt: Date }>(
{},
reportEntries,
20,
async (file) => {
const stat = await fs.stat((file as any).path);
const filePath = (file as any).path ?? (file as any).parentPath;

const stat = await fs.stat(filePath);

return Object.assign(stat, { filePath: (file as any).path, createdAt: stat.birthtime });
return Object.assign(stat, { filePath, createdAt: stat.birthtime });
},
);

Expand Down
7 changes: 3 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "playwright-reports-server",
"version": "5.7.4",
"version": "5.8.0",
"description": "Playwright Reports Server: Can be used to accept blobs, merge them, store and view Playwright reports",
"scripts": {
"build": "next build",
Expand Down Expand Up @@ -78,6 +78,6 @@
"typescript": "5.2.2"
},
"engines": {
"node": ">=22.0.0"
"node": ">=22"
}
}