diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index f7910b7..0000000 --- a/.dockerignore +++ /dev/null @@ -1,13 +0,0 @@ -target/ -.git/ -node_modules/ -.next/ -web/studio/node_modules/ -web/experience/node_modules/ -web/studio/.next/ -web/experience/.next/ -services/*/target/ -*.log -.env -.DS_Store -.vscode/ diff --git a/CACHED b/CACHED deleted file mode 100644 index e69de29..0000000 diff --git a/CANCELED b/CANCELED deleted file mode 100644 index e69de29..0000000 diff --git a/README.md b/README.md index 871486b..ed92027 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,12 @@ docker compose up -d --build - **Rendimiento Bajo (Orange)**: P% to P+9% - **Rendimiento Medio (Yellow)**: P+10% to P+15% - **Buen Rendimiento (Green)**: P+16% to 90% + - **Buen Rendimiento (Green)**: P+16% to 90% - **Excelente (Blue)**: 91%+ +- **Automated Certificate Generation**: + - HTML-based customizable certificate templates + - Automatic download button upon passing a course + - PDF generation for print/save ### 📈 Analytics & Insights - **Instructor Analytics Dashboard**: @@ -85,6 +90,10 @@ docker compose up -d --build - **Students**: Course enrollment, lesson consumption, progress tracking - **Service-to-Service Authorization**: Secure internal API calls with token validation - **Audit Logging**: All CMS mutations recorded for compliance and debugging +- **Admin Audit Dashboard**: + - Visual interface to view system logs + - Diff viewer for JSON changes + - Advanced filtering by user and action ### 🚀 Service Integration - **Automatic Sync**: One-click publish from CMS to LMS @@ -218,6 +227,8 @@ openccb/ - ✅ **Dynamic Passing Thresholds**: Customizable pass marks with 5-tier performance visualization - ✅ **Role-Based Access Control**: Admin, Instructor, and Student roles with granular permissions - ✅ **Enhanced Progress Dashboard**: Real-time weighted grades and visual performance bars +- ✅ **Certificate System**: Custom HTML templates and automated generation +- ✅ **Quality Assurance**: Automated End-to-End (E2E) testing pipeline with Playwright ## Contributing diff --git a/[experience b/[experience deleted file mode 100644 index e69de29..0000000 diff --git a/[studio b/[studio deleted file mode 100644 index e69de29..0000000 diff --git a/docker-compose.yml b/docker-compose.yml index 410b532..ccf5c06 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -52,6 +52,20 @@ services: environment: NEXT_PUBLIC_LMS_API_URL: http://localhost:3002 + e2e: + build: + context: ./e2e + environment: + - STUDIO_URL=http://studio:3000 + - EXPERIENCE_URL=http://experience:3003 + depends_on: + - studio + - experience + volumes: + - ./e2e/tests:/e2e/tests + - ./e2e/playwright-report:/e2e/playwright-report + profiles: [ "test" ] + volumes: postgres_data: uploads_data: diff --git a/e2e/Dockerfile b/e2e/Dockerfile new file mode 100644 index 0000000..d483114 --- /dev/null +++ b/e2e/Dockerfile @@ -0,0 +1,11 @@ +FROM mcr.microsoft.com/playwright:v1.40.0-jammy + +WORKDIR /e2e + +COPY package*.json ./ +RUN npm install + +COPY . . + +# Default command, can be overridden +CMD ["npx", "playwright", "test"] diff --git a/e2e/package.json b/e2e/package.json new file mode 100644 index 0000000..8db850f --- /dev/null +++ b/e2e/package.json @@ -0,0 +1,14 @@ +{ + "name": "openccb-e2e", + "version": "1.0.0", + "scripts": { + "test": "playwright test", + "test:ui": "playwright test --ui", + "test:debug": "playwright test --debug" + }, + "devDependencies": { + "@playwright/test": "1.40.0", + "@types/node": "^20.10.0", + "typescript": "^5.3.0" + } +} \ No newline at end of file diff --git a/e2e/playwright-report/data/0351703cfc25c7bc4b88d18217ac5aedd94caf5e.png b/e2e/playwright-report/data/0351703cfc25c7bc4b88d18217ac5aedd94caf5e.png new file mode 100644 index 0000000..7a6cde4 Binary files /dev/null and b/e2e/playwright-report/data/0351703cfc25c7bc4b88d18217ac5aedd94caf5e.png differ diff --git a/e2e/playwright-report/data/228833cd27617ccc85c6de2c71fe9ba7c3bf289f.webm b/e2e/playwright-report/data/228833cd27617ccc85c6de2c71fe9ba7c3bf289f.webm new file mode 100644 index 0000000..cb6dfa3 Binary files /dev/null and b/e2e/playwright-report/data/228833cd27617ccc85c6de2c71fe9ba7c3bf289f.webm differ diff --git a/e2e/playwright-report/data/2820038172144c35dc7b48b89215617e6a1e2b6e.webm b/e2e/playwright-report/data/2820038172144c35dc7b48b89215617e6a1e2b6e.webm new file mode 100644 index 0000000..c18d720 Binary files /dev/null and b/e2e/playwright-report/data/2820038172144c35dc7b48b89215617e6a1e2b6e.webm differ diff --git a/e2e/playwright-report/data/2b074415dc91ba2ea942b07a85fcb587a1a0ecf9.png b/e2e/playwright-report/data/2b074415dc91ba2ea942b07a85fcb587a1a0ecf9.png new file mode 100644 index 0000000..780ee79 Binary files /dev/null and b/e2e/playwright-report/data/2b074415dc91ba2ea942b07a85fcb587a1a0ecf9.png differ diff --git a/e2e/playwright-report/data/32f6d3aa594400bc97ba56621573ec594af49a85.webm b/e2e/playwright-report/data/32f6d3aa594400bc97ba56621573ec594af49a85.webm new file mode 100644 index 0000000..8d7e74e Binary files /dev/null and b/e2e/playwright-report/data/32f6d3aa594400bc97ba56621573ec594af49a85.webm differ diff --git a/e2e/playwright-report/data/4739403224b5864965dacca5a0addf4fc64d95d2.webm b/e2e/playwright-report/data/4739403224b5864965dacca5a0addf4fc64d95d2.webm new file mode 100644 index 0000000..0f013e4 Binary files /dev/null and b/e2e/playwright-report/data/4739403224b5864965dacca5a0addf4fc64d95d2.webm differ diff --git a/e2e/playwright-report/data/4a312fe22936983e52b9576af833563f3a12104b.png b/e2e/playwright-report/data/4a312fe22936983e52b9576af833563f3a12104b.png new file mode 100644 index 0000000..6adda4d Binary files /dev/null and b/e2e/playwright-report/data/4a312fe22936983e52b9576af833563f3a12104b.png differ diff --git a/e2e/playwright-report/data/547ddda8a524d490694db731698bca0e0999047b.png b/e2e/playwright-report/data/547ddda8a524d490694db731698bca0e0999047b.png new file mode 100644 index 0000000..396d786 Binary files /dev/null and b/e2e/playwright-report/data/547ddda8a524d490694db731698bca0e0999047b.png differ diff --git a/e2e/playwright-report/data/571dc05dc609d2a91d50e14581bb841e7e7d53cb.webm b/e2e/playwright-report/data/571dc05dc609d2a91d50e14581bb841e7e7d53cb.webm new file mode 100644 index 0000000..21c3eea Binary files /dev/null and b/e2e/playwright-report/data/571dc05dc609d2a91d50e14581bb841e7e7d53cb.webm differ diff --git a/e2e/playwright-report/data/617510e7c753a3f75e7f670f16762f480d8f2160.webm b/e2e/playwright-report/data/617510e7c753a3f75e7f670f16762f480d8f2160.webm new file mode 100644 index 0000000..33eccab Binary files /dev/null and b/e2e/playwright-report/data/617510e7c753a3f75e7f670f16762f480d8f2160.webm differ diff --git a/e2e/playwright-report/data/724f95495a378f8e536ae7f3c35bbac342ae19fd.png b/e2e/playwright-report/data/724f95495a378f8e536ae7f3c35bbac342ae19fd.png new file mode 100644 index 0000000..4335591 Binary files /dev/null and b/e2e/playwright-report/data/724f95495a378f8e536ae7f3c35bbac342ae19fd.png differ diff --git a/e2e/playwright-report/data/81523a66ec93d844208cadf99f23a2ef3fea68ee.png b/e2e/playwright-report/data/81523a66ec93d844208cadf99f23a2ef3fea68ee.png new file mode 100644 index 0000000..55fcd83 Binary files /dev/null and b/e2e/playwright-report/data/81523a66ec93d844208cadf99f23a2ef3fea68ee.png differ diff --git a/e2e/playwright-report/data/a8686d22623518bc85c6aacd60717f28cdabcdc6.webm b/e2e/playwright-report/data/a8686d22623518bc85c6aacd60717f28cdabcdc6.webm new file mode 100644 index 0000000..8a84122 Binary files /dev/null and b/e2e/playwright-report/data/a8686d22623518bc85c6aacd60717f28cdabcdc6.webm differ diff --git a/e2e/playwright-report/data/dc021c92b7d1bef3cd8de6683970260b40c7c7a2.webm b/e2e/playwright-report/data/dc021c92b7d1bef3cd8de6683970260b40c7c7a2.webm new file mode 100644 index 0000000..e7d6dd4 Binary files /dev/null and b/e2e/playwright-report/data/dc021c92b7d1bef3cd8de6683970260b40c7c7a2.webm differ diff --git a/e2e/playwright-report/index.html b/e2e/playwright-report/index.html new file mode 100644 index 0000000..e7b6172 --- /dev/null +++ b/e2e/playwright-report/index.html @@ -0,0 +1,62 @@ + + + + +
+ + + +