Skip to content

Commit e531f4b

Browse files
authored
Merge pull request #7005 from Countly/QT-356
[QT-356] Only Upload Artifacts for Failed Cypress E2E Tests Folders in CI
2 parents c330838 + 8e5dd50 commit e531f4b

File tree

2 files changed

+39
-6
lines changed

2 files changed

+39
-6
lines changed

.github/workflows/main.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ jobs:
247247
runs-on: ubuntu-latest
248248

249249
strategy:
250+
fail-fast: false
250251
matrix:
251252
test_type: [dashboard, onboarding]
252253

@@ -338,6 +339,11 @@ jobs:
338339
working-directory: /opt/countly/ui-tests/cypress
339340
run: |
340341
ARTIFACT_ARCHIVE_NAME="$(date '+%Y%m%d-%H.%M')_${GITHUB_REPOSITORY#*/}_CI#${{ github.run_number }}_${{ matrix.test_type }}.tar.gz"
342+
341343
mkdir -p screenshots videos downloads
342-
tar zcvf "$ARTIFACT_ARCHIVE_NAME" screenshots videos downloads
344+
find screenshots videos downloads -type d -empty -delete
345+
346+
TAR_TARGETS=$(ls -d screenshots videos downloads 2>/dev/null || true)
347+
348+
tar zcvf "$ARTIFACT_ARCHIVE_NAME" $TAR_TARGETS
343349
curl -o /tmp/uploader.log -u "${{ secrets.BOX_UPLOAD_AUTH }}" ${{ secrets.BOX_UPLOAD_PATH }} -T "$ARTIFACT_ARCHIVE_NAME"

ui-tests/cypress.config.sample.js

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const { defineConfig } = require("cypress");
22
const fs = require("fs");
3+
const path = require("path");
34
const pdfjsLib = require("pdfjs-dist/legacy/build/pdf.js");
45
const { PNG } = require("pngjs");
56
const sharp = require("sharp");
@@ -124,14 +125,40 @@ module.exports = defineConfig({
124125
});
125126

126127
on("after:spec", (spec, results) => {
127-
if (results?.video) {
128-
const hasFailures = results.tests.some((t) => t.attempts.some((a) => a.state === "failed"));
129-
if (!hasFailures && fs.existsSync(results.video)) {
130-
fs.unlinkSync(results.video);
131-
}
128+
const hasFailures = results?.tests?.some((t) =>
129+
t.attempts.some((a) => a.state === "failed")
130+
);
131+
132+
if (!hasFailures && results?.video && fs.existsSync(results.video)) {
133+
fs.unlinkSync(results.video);
132134
}
133135
});
134136

137+
on("after:run", () => {
138+
const folders = [config.videosFolder, config.screenshotsFolder];
139+
140+
folders.forEach((folder) => {
141+
if (!fs.existsSync(folder)) {
142+
return; // folder yoksa skip
143+
}
144+
145+
fs.readdirSync(folder).forEach((entry) => {
146+
const fullPath = path.join(folder, entry);
147+
148+
if (!fs.existsSync(fullPath)) {
149+
return;
150+
}
151+
152+
if (fs.statSync(fullPath).isDirectory()) {
153+
const content = fs.readdirSync(fullPath);
154+
if (content.length === 0) {
155+
fs.rmSync(fullPath, { recursive: true, force: true });
156+
}
157+
}
158+
});
159+
});
160+
});
161+
135162
on("before:browser:launch", (browser, launchOptions) => {
136163
if (["chrome", "edge", "electron"].includes(browser.name)) {
137164
if (browser.isHeadless) {

0 commit comments

Comments
 (0)