mirror of
https://github.com/PCSX2/pcsx2-net-www.git
synced 2025-05-15 15:56:57 +00:00
tests: create some initial Cypress integration tests (#93)
This commit is contained in:
parent
dd346ee8af
commit
16bc41ea52
26 changed files with 5298 additions and 20 deletions
67
.github/workflows/tests.yaml
vendored
Normal file
67
.github/workflows/tests.yaml
vendored
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
name: Cypress Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '*'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
# TODO - there are improvements that can be made here in terms of caching
|
||||
# https://docs.cypress.io/guides/continuous-integration/github-actions
|
||||
# Keeping it simple for the beginning
|
||||
|
||||
jobs:
|
||||
ui-chrome-tests:
|
||||
name: "Chrome"
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: xtvaser/cypress-with-hugo:node14.17.0-chrome91-ff89
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: "UI Tests - Chrome"
|
||||
uses: cypress-io/github-action@v2
|
||||
with:
|
||||
start: npm run hugo
|
||||
working-directory: tests
|
||||
wait-on: "http://localhost:1313"
|
||||
wait-on-timeout: 120
|
||||
browser: chrome
|
||||
record: true
|
||||
env:
|
||||
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
|
||||
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
||||
# Recommended: pass the GitHub token lets this action correctly
|
||||
# determine the unique run id necessary to re-run the checks
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
ui-firefox-tests:
|
||||
name: "Firefox"
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: xtvaser/cypress-with-hugo:node14.17.0-chrome91-ff89
|
||||
options: --user 1001
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: "UI Tests - Firefox"
|
||||
uses: cypress-io/github-action@v2
|
||||
with:
|
||||
start: npm run hugo
|
||||
working-directory: tests
|
||||
wait-on: "http://localhost:1313"
|
||||
wait-on-timeout: 120
|
||||
browser: firefox
|
||||
record: true
|
||||
env:
|
||||
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
|
||||
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
||||
# Recommended: pass the GitHub token lets this action correctly
|
||||
# determine the unique run id necessary to re-run the checks
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -4,3 +4,5 @@ public/
|
|||
node_modules/
|
||||
data*.json
|
||||
!static/compat/*.json
|
||||
tests/cypress/screenshots
|
||||
tests/cypress/videos
|
||||
|
|
|
|||
7
docker/cypress-with-hugo.Dockerfile
Normal file
7
docker/cypress-with-hugo.Dockerfile
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# https://github.com/cypress-io/cypress/issues/18415
|
||||
# - recording is currently broken on FF93+
|
||||
|
||||
FROM cypress/browsers:node14.17.0-chrome91-ff89
|
||||
|
||||
RUN wget https://github.com/gohugoio/hugo/releases/download/v0.96.0/hugo_extended_0.96.0_Linux-64bit.deb
|
||||
RUN DEBIAN_FRONTEND=noninteractive dpkg --install ./hugo_extended_0.96.0_Linux-64bit.deb
|
||||
4
tests/cypress.json
Normal file
4
tests/cypress.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"baseUrl": "http://localhost:1313",
|
||||
"scrollBehavior": "center"
|
||||
}
|
||||
64
tests/cypress/fixtures/compat_search_data.json
Normal file
64
tests/cypress/fixtures/compat_search_data.json
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
[
|
||||
{
|
||||
"title": "Test Game 1",
|
||||
"serial": "SLUS-1234",
|
||||
"crc": "TEST1234",
|
||||
"region": "us",
|
||||
"status": "Playable",
|
||||
"last_tested_version": "1.1.0",
|
||||
"last_tested_date": "2015-01-03T00:00:00",
|
||||
"wiki_link": "https://wiki.pcsx2.net/index.php/Gungriffon_Blaze",
|
||||
"forum_link": "https://forums.pcsx2.net/showthread.php?tid=28303&action=lastpost"
|
||||
},
|
||||
{
|
||||
"title": "Test Game 2",
|
||||
"serial": "SLUS-5678",
|
||||
"crc": "TEST1234",
|
||||
"region": "us",
|
||||
"status": "Perfect",
|
||||
"last_tested_version": "1.1.0",
|
||||
"last_tested_date": "2015-01-03T00:00:00",
|
||||
"wiki_link": "https://wiki.pcsx2.net/index.php/Gungriffon_Blaze",
|
||||
"forum_link": "https://forums.pcsx2.net/showthread.php?tid=28303&action=lastpost"
|
||||
},
|
||||
{
|
||||
"title": "Test Game 3",
|
||||
"serial": "SLUS-1234",
|
||||
"crc": "VERYUNIQUE",
|
||||
"region": "us",
|
||||
"status": "Nothing",
|
||||
"last_tested_version": "1.1.0",
|
||||
"last_tested_date": "2015-01-03T00:00:00",
|
||||
"wiki_link": "https://wiki.pcsx2.net/index.php/Gungriffon_Blaze",
|
||||
"forum_link": "https://forums.pcsx2.net/showthread.php?tid=28303&action=lastpost"
|
||||
},
|
||||
{
|
||||
"title": "Only Wiki Link",
|
||||
"serial": "SLUS-1234",
|
||||
"crc": "TEST1234",
|
||||
"region": "us",
|
||||
"status": "Intro",
|
||||
"last_tested_version": "1.1.0",
|
||||
"last_tested_date": "2015-01-03T00:00:00",
|
||||
"wiki_link": "https://wiki.pcsx2.net/test"
|
||||
},
|
||||
{
|
||||
"title": "Only Forum Link",
|
||||
"serial": "SLUS-1234",
|
||||
"crc": "TEST1234",
|
||||
"region": "us",
|
||||
"status": "Ingame",
|
||||
"last_tested_version": "1.1.0",
|
||||
"last_tested_date": "2015-01-03T00:00:00",
|
||||
"forum_link": "https://forums.pcsx2.net/test"
|
||||
},
|
||||
{
|
||||
"title": "No Links",
|
||||
"serial": "SLUS-1234",
|
||||
"crc": "TEST1234",
|
||||
"region": "us",
|
||||
"status": "Menus",
|
||||
"last_tested_version": "1.1.0",
|
||||
"last_tested_date": "2015-01-03T00:00:00"
|
||||
}
|
||||
]
|
||||
721
tests/cypress/fixtures/downloads/multi_page.json
Normal file
721
tests/cypress/fixtures/downloads/multi_page.json
Normal file
|
|
@ -0,0 +1,721 @@
|
|||
{
|
||||
"stableReleases": {
|
||||
"data": [
|
||||
{
|
||||
"version": "v1.6.0",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.1",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.2",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.3",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.4",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.5",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.6",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.7",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.8",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.9",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.6.10",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
}
|
||||
],
|
||||
"pageInfo": { "total": 11 }
|
||||
},
|
||||
"nightlyReleases": {
|
||||
"data": [
|
||||
{
|
||||
"version": "v1.7.0",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.1",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.2",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.3",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.4",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.5",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.6",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.7",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.8",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.9",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
},
|
||||
{
|
||||
"version": "v1.7.10",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
}
|
||||
],
|
||||
"pageInfo": { "total": 11 }
|
||||
},
|
||||
"pullRequestBuilds": {
|
||||
"data": [
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
},
|
||||
{
|
||||
"number": 5839,
|
||||
"link": "https://github.com/PCSX2/pcsx2/pull/5839",
|
||||
"githubUser": "Someone",
|
||||
"updatedAt": "2022-04-08T22:06:11.000Z",
|
||||
"body": "Stuff",
|
||||
"title": "Things",
|
||||
"additions": 1,
|
||||
"deletions": 1
|
||||
}
|
||||
],
|
||||
"pageInfo": { "total": 11 }
|
||||
}
|
||||
}
|
||||
14
tests/cypress/fixtures/downloads/no_data.json
Normal file
14
tests/cypress/fixtures/downloads/no_data.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"stableReleases": {
|
||||
"data": [],
|
||||
"pageInfo": { "total": 0 }
|
||||
},
|
||||
"nightlyReleases": {
|
||||
"data": [],
|
||||
"pageInfo": { "total": 0 }
|
||||
},
|
||||
"pullRequestBuilds": {
|
||||
"data": [],
|
||||
"pageInfo": { "total": 0 }
|
||||
}
|
||||
}
|
||||
70
tests/cypress/fixtures/downloads/only_latest.json
Normal file
70
tests/cypress/fixtures/downloads/only_latest.json
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
"stableReleases": {
|
||||
"data": [
|
||||
{
|
||||
"version": "v1.6.0",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.6.0",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 6,
|
||||
"semverPatch": 0,
|
||||
"description": "Release of Stable Version - v1.6.0",
|
||||
"assets": {
|
||||
"Windows": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-installer.exe",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["installer"],
|
||||
"downloadCount": 78364
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.6.0/pcsx2-v1.6.0-windows-32bit-portable.7z",
|
||||
"displayName": "Windows 32bit",
|
||||
"additionalTags": ["portable"],
|
||||
"downloadCount": 30311
|
||||
}
|
||||
],
|
||||
"Linux": [],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 1,
|
||||
"prerelease": false,
|
||||
"createdAt": "2020-05-07T05:37:51.000Z",
|
||||
"publishedAt": "2020-05-07T06:31:55.000Z"
|
||||
}
|
||||
],
|
||||
"pageInfo": { "total": 1 }
|
||||
},
|
||||
"nightlyReleases": {
|
||||
"data": [
|
||||
{
|
||||
"version": "v1.7.2581",
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/tag/v1.7.2581",
|
||||
"semverMajor": 1,
|
||||
"semverMinor": 7,
|
||||
"semverPatch": 2581,
|
||||
"description": "- GS: Flush PRIM on write if pending PRIM draw had TME\n",
|
||||
"assets": {
|
||||
"Windows": [],
|
||||
"Linux": [
|
||||
{
|
||||
"url": "https://github.com/PCSX2/pcsx2/releases/download/v1.7.2581/pcsx2-v1.7.2581-linux-AppImage-64bit.AppImage",
|
||||
"displayName": "Linux AppImage",
|
||||
"additionalTags": ["64bit"],
|
||||
"downloadCount": 0
|
||||
}
|
||||
],
|
||||
"MacOS": []
|
||||
},
|
||||
"type": 2,
|
||||
"prerelease": true,
|
||||
"createdAt": "2022-04-08T10:47:02.000Z",
|
||||
"publishedAt": "2022-04-08T11:00:48.000Z"
|
||||
}
|
||||
],
|
||||
"pageInfo": { "total": 1 }
|
||||
},
|
||||
"pullRequestBuilds": {
|
||||
"data": [],
|
||||
"pageInfo": { "total": 0 }
|
||||
}
|
||||
}
|
||||
26
tests/cypress/integration/components/cookieconsent_spec.js
Normal file
26
tests/cypress/integration/components/cookieconsent_spec.js
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
describe('Cookie consent', () => {
|
||||
beforeEach('ensure the page loads', () => {
|
||||
cy.visit('/');
|
||||
});
|
||||
|
||||
it('appears and is dismissable', () => {
|
||||
cy.server();
|
||||
cy.get('.cc-window');
|
||||
cy.get('.cc-deny');
|
||||
cy.get('.cc-allow').click();
|
||||
cy.get('.cc-window').should('not.visible');
|
||||
cy.route('GET', 'https://pagead2.googlesyndication.com/**').as('get')
|
||||
cy.wait('@get').should((xhr) => {
|
||||
expect(xhr.url, 'get url').to.match(/.*pagead2\.googlesyndication.*/);
|
||||
});
|
||||
});
|
||||
|
||||
it('no reaching out to google prior to consent', () => {
|
||||
cy.server();
|
||||
cy.get('.cc-window');
|
||||
cy.get('.cc-deny').click();
|
||||
cy.get('.cc-window').should('not.visible');
|
||||
cy.wait(1000);
|
||||
cy.requestsCountByUrlPrefix('https://pagead2.googlesyndication.com').should('eq', 0);
|
||||
});
|
||||
});
|
||||
197
tests/cypress/integration/components/navbar_spec.js
Normal file
197
tests/cypress/integration/components/navbar_spec.js
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
describe('navbar - desktop', () => {
|
||||
beforeEach(() => {
|
||||
cy.viewport(1024, 768);
|
||||
cy.visit('/');
|
||||
cy.get('.cc-deny').click();
|
||||
cy.get('.navbar-toggler').should('not.visible');
|
||||
});
|
||||
|
||||
it('download page', () => {
|
||||
cy.get('.nav-middle > :nth-child(1) > .nav-link')
|
||||
.should('have.attr', 'href')
|
||||
.and('equal', '/downloads')
|
||||
.then((href) => {
|
||||
cy.visit(href)
|
||||
});
|
||||
});
|
||||
|
||||
it('compatibility page', () => {
|
||||
cy.get('.nav-middle > :nth-child(2) > .nav-link')
|
||||
.should('have.attr', 'href')
|
||||
.and('equal', '/compat')
|
||||
.then((href) => {
|
||||
cy.visit(href)
|
||||
});
|
||||
});
|
||||
|
||||
it('blog page', () => {
|
||||
cy.get('.nav-middle > :nth-child(3) > .nav-link')
|
||||
.should('have.attr', 'href')
|
||||
.and('equal', '/blog')
|
||||
.then((href) => {
|
||||
cy.visit(href)
|
||||
});
|
||||
});
|
||||
|
||||
it('discord link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(1) > .nav-link')
|
||||
.should('contain.text', "Discord")
|
||||
.should('have.attr', 'href')
|
||||
.should('match', /^https:\/\/discord.com\/invite\/.*/);
|
||||
});
|
||||
|
||||
it('github link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(2) > .nav-link')
|
||||
.should('contain.text', "Github")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', "https://github.com/PCSX2");
|
||||
});
|
||||
|
||||
it('forum link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(3) > .nav-link')
|
||||
.should('contain.text', "Forums")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', "https://forums.pcsx2.net/");
|
||||
});
|
||||
|
||||
it('wiki link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(4) > .nav-link')
|
||||
.should('contain.text', "Wiki")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', "https://wiki.pcsx2.net");
|
||||
});
|
||||
|
||||
it('twitter link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(5) > .nav-link')
|
||||
.should('contain.text', "Twitter")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', 'https://twitter.com/PCSX2');
|
||||
});
|
||||
|
||||
it('youtube link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(6) > .nav-link')
|
||||
.should('contain.text', "YouTube")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', 'https://www.youtube.com/user/PCSX2team');
|
||||
});
|
||||
|
||||
it('theme is switchable', () => {
|
||||
// get current theme
|
||||
cy.get("html").then(($el) => {
|
||||
if ($el.hasClass('theme-dark')) {
|
||||
cy.get('.theme-toggle-label').click();
|
||||
cy.get("html").should('have.class', 'theme-light');
|
||||
} else {
|
||||
cy.get('.theme-toggle-label').click();
|
||||
cy.get("html").should('have.class', 'theme-dark');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('navbar - mobile', () => {
|
||||
beforeEach(() => {
|
||||
cy.viewport(320, 568);
|
||||
cy.visit('/');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('is collapsed', () => {
|
||||
cy.get('[data-test-id="about-section"]').contains('PCSX2');
|
||||
});
|
||||
|
||||
it('can be expanded', () => {
|
||||
cy.get('.nav-middle > :nth-child(1) > .nav-link').should('not.visible');
|
||||
cy.get('.navbar-toggler').click();
|
||||
cy.get('.nav-middle > :nth-child(1) > .nav-link');
|
||||
});
|
||||
|
||||
describe('test links', () => {
|
||||
beforeEach(() => {
|
||||
cy.visit('/');
|
||||
cy.get('.navbar-toggler').click();
|
||||
});
|
||||
|
||||
it('download page', () => {
|
||||
cy.get('.nav-middle > :nth-child(1) > .nav-link')
|
||||
.should('have.attr', 'href')
|
||||
.and('equal', '/downloads')
|
||||
.then((href) => {
|
||||
cy.visit(href)
|
||||
});
|
||||
});
|
||||
|
||||
it('compatibility page', () => {
|
||||
cy.get('.nav-middle > :nth-child(2) > .nav-link')
|
||||
.should('have.attr', 'href')
|
||||
.and('equal', '/compat')
|
||||
.then((href) => {
|
||||
cy.visit(href)
|
||||
});
|
||||
});
|
||||
|
||||
it('blog page', () => {
|
||||
cy.get('.nav-middle > :nth-child(3) > .nav-link')
|
||||
.should('have.attr', 'href')
|
||||
.and('equal', '/blog')
|
||||
.then((href) => {
|
||||
cy.visit(href)
|
||||
});
|
||||
});
|
||||
|
||||
it('discord link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(1) > .nav-link')
|
||||
.should('contain.text', "Discord")
|
||||
.should('have.attr', 'href')
|
||||
.should('match', /^https:\/\/discord.com\/invite\/.*/);
|
||||
});
|
||||
|
||||
it('github link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(2) > .nav-link')
|
||||
.should('contain.text', "Github")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', "https://github.com/PCSX2");
|
||||
});
|
||||
|
||||
it('forum link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(3) > .nav-link')
|
||||
.should('contain.text', "Forums")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', "https://forums.pcsx2.net/");
|
||||
});
|
||||
|
||||
it('wiki link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(4) > .nav-link')
|
||||
.should('contain.text', "Wiki")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', "https://wiki.pcsx2.net");
|
||||
});
|
||||
|
||||
it('twitter link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(5) > .nav-link')
|
||||
.should('contain.text', "Twitter")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', 'https://twitter.com/PCSX2');
|
||||
});
|
||||
|
||||
it('youtube link', () => {
|
||||
cy.get(':nth-child(4) > :nth-child(6) > .nav-link')
|
||||
.should('contain.text', "YouTube")
|
||||
.should('have.attr', 'href')
|
||||
.should('equal', 'https://www.youtube.com/user/PCSX2team');
|
||||
});
|
||||
|
||||
it('theme is switchable', () => {
|
||||
// get current theme
|
||||
cy.get("html").then(($el) => {
|
||||
if ($el.hasClass('theme-dark')) {
|
||||
cy.get('.theme-toggle-label').click();
|
||||
cy.get("html").should('have.class', 'theme-light');
|
||||
} else {
|
||||
cy.get('.theme-toggle-label').click();
|
||||
cy.get("html").should('have.class', 'theme-dark');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
59
tests/cypress/integration/pages/blog_spec.js
Normal file
59
tests/cypress/integration/pages/blog_spec.js
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
describe('Blog Page - Desktop', () => {
|
||||
beforeEach('ensure the page loads', () => {
|
||||
cy.viewport(1024, 768);
|
||||
cy.visit('/blog');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('all categories active by default', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="tag-button-all"]').should('have.class', 'active');
|
||||
});
|
||||
|
||||
it('pagination functions', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('.pagination > .active > .page-link').contains("1");
|
||||
cy.get('.pagination > :nth-child(4) > .page-link').click();
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/blog/page/2/');
|
||||
});
|
||||
|
||||
it('scope to developer blogs', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="tag-button-row"]').find('.btn').contains('Developer Blogs').click();
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/tags/devblog/');
|
||||
cy.get('[data-test-id="tag-button-row"]').find('.btn').contains('Developer Blogs').should('have.class', 'active');
|
||||
});
|
||||
|
||||
it('scope to progress reports', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="tag-button-row"]').find('.btn').contains('Progress Reports').click();
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/tags/progress-report/');
|
||||
cy.get('[data-test-id="tag-button-row"]').find('.btn').contains('Progress Reports').should('have.class', 'active');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Blog Page - Mobile', () => {
|
||||
beforeEach('ensure the page loads', () => {
|
||||
cy.viewport(320, 568);
|
||||
cy.visit('/blog');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('all categories active by default', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="tag-button-all"]').should('have.class', 'active');
|
||||
});
|
||||
|
||||
it('pagination functions', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('.pagination > .active > .page-link').contains("1");
|
||||
cy.get('.pagination > :nth-child(4) > .page-link').click();
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/blog/page/2/');
|
||||
});
|
||||
|
||||
it('scope to developer blogs', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="tag-button-row"]').find('.btn').contains('Developer Blogs').click();
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/tags/devblog/');
|
||||
cy.get('[data-test-id="tag-button-row"]').find('.btn').contains('Developer Blogs').should('have.class', 'active');
|
||||
});
|
||||
|
||||
it('scope to progress reports', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="tag-button-row"]').find('.btn').contains('Progress Reports').click();
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/tags/progress-report/');
|
||||
cy.get('[data-test-id="tag-button-row"]').find('.btn').contains('Progress Reports').should('have.class', 'active');
|
||||
});
|
||||
});
|
||||
470
tests/cypress/integration/pages/compat_spec.js
Normal file
470
tests/cypress/integration/pages/compat_spec.js
Normal file
|
|
@ -0,0 +1,470 @@
|
|||
describe('Compatibility Page - Desktop', () => {
|
||||
beforeEach('set viewport size', () => {
|
||||
cy.viewport(1024, 768);
|
||||
});
|
||||
|
||||
describe('pagination', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gt', 0);
|
||||
});
|
||||
|
||||
it('pagination works', () => {
|
||||
cy.get(".table-responsive").first(".game-title").contains("0 Story");
|
||||
cy.get('#compat-pagination-container > :nth-child(2) > button').click();
|
||||
cy.get(".table-responsive").first(".game-title").contains("Ace Combat Zero - The Belkan War");
|
||||
});
|
||||
});
|
||||
|
||||
describe('page size', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gt', 0);
|
||||
});
|
||||
|
||||
it('can change page size - 50', () => {
|
||||
cy.get('#compat-page-size').click();
|
||||
cy.get(':nth-child(2) > .dropdown-item').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gte', 50);
|
||||
});
|
||||
|
||||
it('can change page size - 100', () => {
|
||||
cy.get('#compat-page-size').click();
|
||||
cy.get(':nth-child(3) > .dropdown-item').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gte', 100);
|
||||
});
|
||||
|
||||
it('can change page size - 250', () => {
|
||||
cy.get('#compat-page-size').click();
|
||||
cy.get(':nth-child(4) > .dropdown-item').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gte', 250);
|
||||
});
|
||||
});
|
||||
|
||||
describe('compat data empty', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: '/compat/data.min.json',
|
||||
},
|
||||
[]
|
||||
).as('getCompatData')
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get("#compat-table-body").contains("No Results Found");
|
||||
});
|
||||
});
|
||||
|
||||
describe('compatibility and filtering', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: '/compat/data.min.json',
|
||||
},
|
||||
{ fixture: 'compat_search_data.json' }
|
||||
).as('getCompatData')
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 6);
|
||||
});
|
||||
|
||||
it('percentages are correct', () => {
|
||||
cy.get('#compat-filter-perfect').contains("16.67%");
|
||||
cy.get('#compat-filter-playable').contains("16.67%");
|
||||
cy.get('#compat-filter-ingame').contains("16.67%");
|
||||
cy.get('#compat-filter-menus').contains("16.67%");
|
||||
cy.get('#compat-filter-intro').contains("16.67%");
|
||||
cy.get('#compat-filter-nothing').contains("16.67%");
|
||||
});
|
||||
|
||||
it('only perfect', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
cy.get('#compat-filter-playable').click({force: true});
|
||||
cy.get('#compat-filter-ingame').click({force: true});
|
||||
cy.get('#compat-filter-menus').click({force: true});
|
||||
cy.get('#compat-filter-intro').click({force: true});
|
||||
cy.get('#compat-filter-nothing').click({force: true});
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Test Game 2");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Perfect");
|
||||
});
|
||||
|
||||
it('only playble', () => {
|
||||
cy.get('#compat-filter-perfect').click({force: true});
|
||||
cy.get('#compat-filter-playable').click({force: true});
|
||||
// cy.get('#compat-filter-ingame').click();
|
||||
// cy.get('#compat-filter-menus').click();
|
||||
// cy.get('#compat-filter-intro').click();
|
||||
// cy.get('#compat-filter-nothing').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Test Game 1");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Playable");
|
||||
});
|
||||
|
||||
it('only ingame', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
cy.get('#compat-filter-playable').click({force: true});
|
||||
cy.get('#compat-filter-ingame').click({force: true});
|
||||
// cy.get('#compat-filter-menus').click();
|
||||
// cy.get('#compat-filter-intro').click();
|
||||
// cy.get('#compat-filter-nothing').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Only Forum Link");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Ingame");
|
||||
});
|
||||
|
||||
it('only menus', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
// cy.get('#compat-filter-playable').click();
|
||||
cy.get('#compat-filter-ingame').click({force: true});
|
||||
cy.get('#compat-filter-menus').click({force: true});
|
||||
// cy.get('#compat-filter-intro').click();
|
||||
// cy.get('#compat-filter-nothing').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("No Links");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Menus");
|
||||
});
|
||||
|
||||
it('only intros', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
// cy.get('#compat-filter-playable').click();
|
||||
// cy.get('#compat-filter-ingame').click();
|
||||
cy.get('#compat-filter-menus').click({force: true});
|
||||
cy.get('#compat-filter-intro').click({force: true});
|
||||
// cy.get('#compat-filter-nothing').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Only Wiki Link");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Intro");
|
||||
});
|
||||
|
||||
it('only nothing', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
// cy.get('#compat-filter-playable').click();
|
||||
// cy.get('#compat-filter-ingame').click();
|
||||
// cy.get('#compat-filter-menus').click();
|
||||
cy.get('#compat-filter-intro').click({force: true});
|
||||
cy.get('#compat-filter-nothing').click({force: true});
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Test Game 3");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Nothing");
|
||||
});
|
||||
});
|
||||
|
||||
describe('searching', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: '/compat/data.min.json',
|
||||
},
|
||||
{ fixture: 'compat_search_data.json' }
|
||||
).as('getCompatData')
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gt', 0);
|
||||
});
|
||||
|
||||
it('entry with no links', () => {
|
||||
cy.get("tr").contains("No Links").siblings().find("a").should('not.exist');
|
||||
});
|
||||
|
||||
it('entry with only wiki link', () => {
|
||||
cy.get("tr").contains("Only Wiki Link").siblings().get('a > .fa-circle-info');
|
||||
});
|
||||
|
||||
it('search by name - many', () => {
|
||||
cy.get('#compat-search').type("{selectAll}tEsT gAeM");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 3);
|
||||
});
|
||||
|
||||
it('search by name - unique', () => {
|
||||
cy.get('#compat-search').type("{selectAll}No Links");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('search by crc - many', () => {
|
||||
cy.get('#compat-search').type("{selectAll}TEST1234");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 5);
|
||||
});
|
||||
|
||||
it('search by crc - unique', () => {
|
||||
cy.get('#compat-search').type("{selectAll}VERYUNIQUE");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('search by serial - many', () => {
|
||||
cy.get('#compat-search').type("{selectAll}SLUS-1234");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 5);
|
||||
});
|
||||
|
||||
it('search by serial - unique', () => {
|
||||
cy.get('#compat-search').type("{selectAll}SLUS-4567");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('search - no results', () => {
|
||||
cy.get('#compat-search').type("{selectAll}complete garbage");
|
||||
cy.get("#compat-table-body").contains("No Results Found");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Compatibility Page - Mobile', () => {
|
||||
beforeEach('set viewport size', () => {
|
||||
cy.viewport(320, 568);
|
||||
});
|
||||
|
||||
describe('correct columns are hidden', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gt', 0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('pagination', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gt', 0);
|
||||
});
|
||||
|
||||
it('pagination works', () => {
|
||||
cy.get(".table-responsive").first(".game-title").contains("0 Story");
|
||||
cy.get('#compat-pagination-container > :nth-child(2) > button').click();
|
||||
cy.get(".table-responsive").first(".game-title").contains("Ace Combat Zero - The Belkan War");
|
||||
});
|
||||
});
|
||||
|
||||
describe('page size', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gt', 0);
|
||||
});
|
||||
|
||||
it('can change page size - 50', () => {
|
||||
cy.get('#compat-page-size').click({force: true});
|
||||
cy.get(':nth-child(2) > .dropdown-item').click({force: true});
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gte', 50);
|
||||
});
|
||||
|
||||
it('can change page size - 100', () => {
|
||||
cy.get('#compat-page-size').click({force: true});
|
||||
cy.get(':nth-child(3) > .dropdown-item').click({force: true});
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gte', 100);
|
||||
});
|
||||
|
||||
it('can change page size - 250', () => {
|
||||
cy.get('#compat-page-size').click({force: true});
|
||||
cy.get(':nth-child(4) > .dropdown-item').click({force: true});
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gte', 250);
|
||||
});
|
||||
});
|
||||
|
||||
describe('compat data empty', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: '/compat/data.min.json',
|
||||
},
|
||||
[]
|
||||
).as('getCompatData')
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get("#compat-table-body").contains("No Results Found");
|
||||
});
|
||||
});
|
||||
|
||||
describe('compatibility and filtering', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: '/compat/data.min.json',
|
||||
},
|
||||
{ fixture: 'compat_search_data.json' }
|
||||
).as('getCompatData')
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 6);
|
||||
});
|
||||
|
||||
it('percentages are correct', () => {
|
||||
cy.get('#compat-filter-perfect').contains("16.67%");
|
||||
cy.get('#compat-filter-playable').contains("16.67%");
|
||||
cy.get('#compat-filter-ingame').contains("16.67%");
|
||||
cy.get('#compat-filter-menus').contains("16.67%");
|
||||
cy.get('#compat-filter-intro').contains("16.67%");
|
||||
cy.get('#compat-filter-nothing').contains("16.67%");
|
||||
});
|
||||
|
||||
it('only perfect', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
cy.get('#compat-filter-playable').click({force: true});
|
||||
cy.get('#compat-filter-ingame').click({force: true});
|
||||
cy.get('#compat-filter-menus').click({force: true});
|
||||
cy.get('#compat-filter-intro').click({force: true});
|
||||
cy.get('#compat-filter-nothing').click({force: true});
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Test Game 2");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Perfect");
|
||||
});
|
||||
|
||||
it('only playble', () => {
|
||||
cy.get('#compat-filter-perfect').click({force: true});
|
||||
cy.get('#compat-filter-playable').click({force: true});
|
||||
// cy.get('#compat-filter-ingame').click();
|
||||
// cy.get('#compat-filter-menus').click();
|
||||
// cy.get('#compat-filter-intro').click();
|
||||
// cy.get('#compat-filter-nothing').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Test Game 1");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Playable");
|
||||
});
|
||||
|
||||
it('only ingame', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
cy.get('#compat-filter-playable').click({force: true});
|
||||
cy.get('#compat-filter-ingame').click({force: true});
|
||||
// cy.get('#compat-filter-menus').click();
|
||||
// cy.get('#compat-filter-intro').click();
|
||||
// cy.get('#compat-filter-nothing').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Only Forum Link");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Ingame");
|
||||
});
|
||||
|
||||
it('only menus', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
// cy.get('#compat-filter-playable').click();
|
||||
cy.get('#compat-filter-ingame').click({force: true});
|
||||
cy.get('#compat-filter-menus').click({force: true});
|
||||
// cy.get('#compat-filter-intro').click();
|
||||
// cy.get('#compat-filter-nothing').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("No Links");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Menus");
|
||||
});
|
||||
|
||||
it('only intros', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
// cy.get('#compat-filter-playable').click();
|
||||
// cy.get('#compat-filter-ingame').click();
|
||||
cy.get('#compat-filter-menus').click({force: true});
|
||||
cy.get('#compat-filter-intro').click({force: true});
|
||||
// cy.get('#compat-filter-nothing').click();
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Only Wiki Link");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Intro");
|
||||
});
|
||||
|
||||
it('only nothing', () => {
|
||||
// cy.get('#compat-filter-perfect').click();
|
||||
// cy.get('#compat-filter-playable').click();
|
||||
// cy.get('#compat-filter-ingame').click();
|
||||
// cy.get('#compat-filter-menus').click();
|
||||
cy.get('#compat-filter-intro').click({force: true});
|
||||
cy.get('#compat-filter-nothing').click({force: true});
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
cy.get(".table-responsive").first(".game-title").contains("Test Game 3");
|
||||
cy.get(".table-responsive").first(".game-title").get("i.Nothing");
|
||||
});
|
||||
});
|
||||
|
||||
describe('searching', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: '/compat/data.min.json',
|
||||
},
|
||||
{ fixture: 'compat_search_data.json' }
|
||||
).as('getCompatData')
|
||||
cy.visit('/compat');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('successfully loads', () => {
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('gt', 0);
|
||||
});
|
||||
|
||||
it('entry with no links', () => {
|
||||
cy.get("tr").contains("No Links").siblings().find("a").should('not.exist');
|
||||
});
|
||||
|
||||
it('entry with only wiki link', () => {
|
||||
cy.get("tr").contains("Only Wiki Link").siblings().get('a > .fa-circle-info');
|
||||
});
|
||||
|
||||
it('search by name - many', () => {
|
||||
cy.get('#compat-search').type("{selectAll}tEsT gAeM");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 3);
|
||||
});
|
||||
|
||||
it('search by name - unique', () => {
|
||||
cy.get('#compat-search').type("{selectAll}No Links");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('search by crc - many', () => {
|
||||
cy.get('#compat-search').type("{selectAll}TEST1234");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 5);
|
||||
});
|
||||
|
||||
it('search by crc - unique', () => {
|
||||
cy.get('#compat-search').type("{selectAll}VERYUNIQUE");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('search by serial - many', () => {
|
||||
cy.get('#compat-search').type("{selectAll}SLUS-1234");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 5);
|
||||
});
|
||||
|
||||
it('search by serial - unique', () => {
|
||||
cy.get('#compat-search').type("{selectAll}SLUS-4567");
|
||||
cy.get(".table-responsive").find(".game-title").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('search - no results', () => {
|
||||
cy.get('#compat-search').type("{selectAll}complete garbage");
|
||||
cy.get("#compat-table-body").contains("No Results Found");
|
||||
});
|
||||
});
|
||||
});
|
||||
263
tests/cypress/integration/pages/downloads_spec.js
Normal file
263
tests/cypress/integration/pages/downloads_spec.js
Normal file
|
|
@ -0,0 +1,263 @@
|
|||
describe('Download Page - Desktop', () => {
|
||||
beforeEach('ensure the page loads', () => {
|
||||
cy.viewport(1024, 768);
|
||||
});
|
||||
|
||||
describe('downtime scenario', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.visit('/downloads');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('help guides point to the right page', () => {
|
||||
cy.get('[data-test-id="setup-guide"]').its('length').should('eq', 2);;
|
||||
});
|
||||
|
||||
it('handles downtime gracefully', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="downtime-notification"]');
|
||||
cy.get('[data-test-id="latest-release-artifacts-loading"]').find('button').its('length').should('eq', 3);
|
||||
cy.get('#stable-table-body').find('.skeleton-line').its('length').should('gt', 0);
|
||||
cy.get('[data-test-id="latest-nightly-artifacts-loading"]').find('button').its('length').should('eq', 3);
|
||||
cy.get('#nightly-table-body').find('.skeleton-line').its('length').should('gt', 0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('latest artifacts', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/latestReleasesAndPullRequests',
|
||||
},
|
||||
{ fixture: 'downloads/only_latest.json' }
|
||||
).as('getDownloadData')
|
||||
cy.visit('/downloads');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('latest buttons populated as expected', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#latest-release-artifacts > :nth-child(1) .artifact-dropdown').click();
|
||||
cy.get('#latest-release-artifacts > :nth-child(1) > .dropdown > .dropdown-menu > :nth-child(1) > .dropdown-item').contains("Windows 32bit");
|
||||
cy.get('#latest-release-artifacts > :nth-child(2) .artifact-dropdown').contains("Linux").should('be.disabled');
|
||||
|
||||
cy.get('#latest-nightly-artifacts > :nth-child(1) .artifact-dropdown').contains("Windows").should('be.disabled');
|
||||
cy.get('#latest-nightly-artifacts > :nth-child(2) .artifact-dropdown').click({force: true});
|
||||
cy.get('#latest-nightly-artifacts > :nth-child(2) > .dropdown > .dropdown-menu > :nth-child(1) > .dropdown-item').contains("AppImage");
|
||||
});
|
||||
|
||||
it('pull requests are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#pull-request-table-body > tr > td').contains("No Pull Requests to Display!");
|
||||
});
|
||||
});
|
||||
|
||||
describe('no data to show', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/latestReleasesAndPullRequests',
|
||||
},
|
||||
{ fixture: 'downloads/no_data.json' }
|
||||
).as('getDownloadData')
|
||||
cy.visit('/downloads');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('stable releases are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#stable-table-body > tr > td').contains("No Releases to Display!");
|
||||
});
|
||||
|
||||
it('nightly releases are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#nightly-table-body > tr > td').contains("No Releases to Display!");
|
||||
});
|
||||
|
||||
it('pull requests are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#pull-request-table-body > tr > td').contains("No Pull Requests to Display!");
|
||||
});
|
||||
});
|
||||
|
||||
describe('multiple pages', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/latestReleasesAndPullRequests',
|
||||
},
|
||||
{ fixture: 'downloads/multi_page.json' }
|
||||
).as('getDownloadData');
|
||||
cy.visit('/downloads');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('stable releases', { scrollBehavior: 'center' }, () => {
|
||||
cy.get("#stable-table-body").find("tr").its('length').should('eq', 10);
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/stableReleases?offset=10',
|
||||
},
|
||||
{ data: [] }
|
||||
);
|
||||
cy.get('#stable-pagination-container > :nth-child(2) > .btn').click();
|
||||
cy.get("#stable-table-body").find("tr").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('nightly releases are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get("#nightly-table-body").find("tr").its('length').should('eq', 10);
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/nightlyReleases?offset=10',
|
||||
},
|
||||
{ data: [] }
|
||||
);
|
||||
cy.get('#nightly-pagination-container > :nth-child(2) > .btn').click({force: true});
|
||||
cy.get("#nightly-table-body").find("tr").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('pull requests are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get("#pull-request-table-body").find("tr").its('length').should('eq', 10);
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/pullRequests?offset=10',
|
||||
},
|
||||
{ data: [] }
|
||||
);
|
||||
cy.get('#pull-request-pagination-container > :nth-child(2) > .btn').click({force: true});
|
||||
cy.get("#pull-request-table-body").find("tr").its('length').should('eq', 1);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Download Page - Mobile', () => {
|
||||
beforeEach('ensure the page loads', () => {
|
||||
cy.viewport(320, 568);
|
||||
});
|
||||
|
||||
describe('downtime scenario', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.visit('/downloads');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('help guides point to the right page', () => {
|
||||
cy.get('[data-test-id="setup-guide"]').its('length').should('eq', 2);;
|
||||
});
|
||||
|
||||
it('handles downtime gracefully', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="downtime-notification"]');
|
||||
cy.get('[data-test-id="latest-release-artifacts-loading"]').find('button').its('length').should('eq', 3);
|
||||
cy.get('#stable-table-body').find('.skeleton-line').its('length').should('gt', 0);
|
||||
cy.get('[data-test-id="latest-nightly-artifacts-loading"]').find('button').its('length').should('eq', 3);
|
||||
cy.get('#nightly-table-body').find('.skeleton-line').its('length').should('gt', 0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('latest artifacts', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/latestReleasesAndPullRequests',
|
||||
},
|
||||
{ fixture: 'downloads/only_latest.json' }
|
||||
).as('getDownloadData')
|
||||
cy.visit('/downloads');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('latest buttons populated as expected', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#latest-release-artifacts > :nth-child(1) .artifact-dropdown').click();
|
||||
cy.get('#latest-release-artifacts > :nth-child(1) > .dropdown > .dropdown-menu > :nth-child(1) > .dropdown-item').contains("Windows 32bit");
|
||||
cy.get('#latest-release-artifacts > :nth-child(2) .artifact-dropdown').contains("Linux").should('be.disabled');
|
||||
|
||||
cy.get('#latest-nightly-artifacts > :nth-child(1) .artifact-dropdown').contains("Windows").should('be.disabled');
|
||||
cy.get('#latest-nightly-artifacts > :nth-child(2) .artifact-dropdown').click({force: true});
|
||||
cy.get('#latest-nightly-artifacts > :nth-child(2) > .dropdown > .dropdown-menu > :nth-child(1) > .dropdown-item').contains("AppImage");
|
||||
});
|
||||
|
||||
it('pull requests are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#pull-request-table-body > tr > td').contains("No Pull Requests to Display!");
|
||||
});
|
||||
});
|
||||
|
||||
describe('no data to show', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/latestReleasesAndPullRequests',
|
||||
},
|
||||
{ fixture: 'downloads/no_data.json' }
|
||||
).as('getDownloadData')
|
||||
cy.visit('/downloads');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('stable releases are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#stable-table-body > tr > td').contains("No Releases to Display!");
|
||||
});
|
||||
|
||||
it('nightly releases are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#nightly-table-body > tr > td').contains("No Releases to Display!");
|
||||
});
|
||||
|
||||
it('pull requests are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('#pull-request-table-body > tr > td').contains("No Pull Requests to Display!");
|
||||
});
|
||||
});
|
||||
|
||||
describe('multiple pages', { scrollBehavior: 'center' }, () => {
|
||||
before('load page', () => {
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/latestReleasesAndPullRequests',
|
||||
},
|
||||
{ fixture: 'downloads/multi_page.json' }
|
||||
).as('getDownloadData');
|
||||
cy.visit('/downloads');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('stable releases', { scrollBehavior: 'center' }, () => {
|
||||
cy.get("#stable-table-body").find("tr").its('length').should('eq', 10);
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/stableReleases?offset=10',
|
||||
},
|
||||
{ data: [] }
|
||||
);
|
||||
cy.get('#stable-pagination-container > :nth-child(2) > .btn').click();
|
||||
cy.get("#stable-table-body").find("tr").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('nightly releases are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get("#nightly-table-body").find("tr").its('length').should('eq', 10);
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/nightlyReleases?offset=10',
|
||||
},
|
||||
{ data: [] }
|
||||
);
|
||||
cy.get('#nightly-pagination-container > :nth-child(2) > .btn').click({force: true});
|
||||
cy.get("#nightly-table-body").find("tr").its('length').should('eq', 1);
|
||||
});
|
||||
|
||||
it('pull requests are empty', { scrollBehavior: 'center' }, () => {
|
||||
cy.get("#pull-request-table-body").find("tr").its('length').should('eq', 10);
|
||||
cy.intercept(
|
||||
{
|
||||
method: 'GET',
|
||||
url: 'http://localhost:3000/v1/pullRequests?offset=10',
|
||||
},
|
||||
{ data: [] }
|
||||
);
|
||||
cy.get('#pull-request-pagination-container > :nth-child(2) > .btn').click({force: true});
|
||||
cy.get("#pull-request-table-body").find("tr").its('length').should('eq', 1);
|
||||
});
|
||||
});
|
||||
});
|
||||
51
tests/cypress/integration/pages/home_spec.js
Normal file
51
tests/cypress/integration/pages/home_spec.js
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
describe('Home Page - Desktop', () => {
|
||||
beforeEach('ensure the page loads', () => {
|
||||
cy.viewport(1024, 768);
|
||||
cy.visit('/');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('about section', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="about-section"] > .col-md-4');
|
||||
cy.get('[data-test-id="about-section"] > .col-md-8').find('a[href="/compat"]').click({force: true});
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/compat/');
|
||||
});
|
||||
|
||||
it('progress report section', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="progress-report-section"] > .col-md-8').find(".card").its('length').should('eq', 2);
|
||||
cy.get('[data-test-id="progress-report-section"] > .col-md-4').find(".btn").click({force: true});
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/tags/progress-report/');
|
||||
});
|
||||
|
||||
it('blog post section', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="blog-post-section"] > .col-md-8').find(".card").its('length').should('eq', 2);
|
||||
cy.get('[data-test-id="blog-post-section"] > .col-md-4').find(".btn").click({force: true});
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/tags/devblog/');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Home Page - Mobile', () => {
|
||||
beforeEach('ensure the page loads', () => {
|
||||
cy.viewport(320, 568);
|
||||
cy.visit('/');
|
||||
cy.get('.cc-deny').click();
|
||||
});
|
||||
|
||||
it('about section', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="about-section"] > .col-md-4');
|
||||
cy.get('[data-test-id="about-section"] > .col-md-8').find('a[href="/compat"]').click({force: true});
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/compat/');
|
||||
});
|
||||
|
||||
it('progress report section', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="progress-report-section"] > .col-md-8').find(".card").its('length').should('eq', 2);
|
||||
cy.get('[data-test-id="progress-report-section"] > .col-md-4').find(".btn").click({force: true});
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/tags/progress-report/');
|
||||
});
|
||||
|
||||
it('blog post section', { scrollBehavior: 'center' }, () => {
|
||||
cy.get('[data-test-id="blog-post-section"] > .col-md-8').find(".card").its('length').should('eq', 2);
|
||||
cy.get('[data-test-id="blog-post-section"] > .col-md-4').find(".btn").click({force: true});
|
||||
cy.location('href').should('eq', Cypress.config("baseUrl") + '/tags/devblog/');
|
||||
});
|
||||
});
|
||||
22
tests/cypress/plugins/index.js
Normal file
22
tests/cypress/plugins/index.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/// <reference types="cypress" />
|
||||
// ***********************************************************
|
||||
// This example plugins/index.js can be used to load plugins
|
||||
//
|
||||
// You can change the location of this file or turn off loading
|
||||
// the plugins file with the 'pluginsFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/plugins-guide
|
||||
// ***********************************************************
|
||||
|
||||
// This function is called when a project is opened or re-opened (e.g. due to
|
||||
// the project's config changing)
|
||||
|
||||
/**
|
||||
* @type {Cypress.PluginConfig}
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
module.exports = (on, config) => {
|
||||
// `on` is used to hook into various events Cypress emits
|
||||
// `config` is the resolved Cypress config
|
||||
}
|
||||
32
tests/cypress/support/commands.js
Normal file
32
tests/cypress/support/commands.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// ***********************************************
|
||||
// This example commands.js shows you how to
|
||||
// create various custom commands and overwrite
|
||||
// existing commands.
|
||||
//
|
||||
// For more comprehensive examples of custom
|
||||
// commands please read more here:
|
||||
// https://on.cypress.io/custom-commands
|
||||
// ***********************************************
|
||||
//
|
||||
//
|
||||
// -- This is a parent command --
|
||||
// Cypress.Commands.add('login', (email, password) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This is a child command --
|
||||
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This is a dual command --
|
||||
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This will overwrite an existing command --
|
||||
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
|
||||
|
||||
Cypress.Commands.add('requestsCountByUrlPrefix', url =>
|
||||
cy.wrap().then(() => {
|
||||
const requests = cy.state('requests') || [];
|
||||
return requests.filter(req => req.xhr.url.startsWith(url)).length;
|
||||
})
|
||||
);
|
||||
20
tests/cypress/support/index.js
Normal file
20
tests/cypress/support/index.js
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// ***********************************************************
|
||||
// This example support/index.js is processed and
|
||||
// loaded automatically before your test files.
|
||||
//
|
||||
// This is a great place to put global configuration and
|
||||
// behavior that modifies Cypress.
|
||||
//
|
||||
// You can change the location of this file or turn off
|
||||
// automatically serving support files with the
|
||||
// 'supportFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/configuration
|
||||
// ***********************************************************
|
||||
|
||||
// Import commands.js using ES2015 syntax:
|
||||
import './commands'
|
||||
|
||||
// Alternatively you can use CommonJS syntax:
|
||||
// require('./commands')
|
||||
3174
tests/package-lock.json
generated
Normal file
3174
tests/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
15
tests/package.json
Normal file
15
tests/package.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"name": "pcsx2-net-www-tests",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"hugo": "cd .. && hugo server -D --noHTTPCache",
|
||||
"cypress:open": "cypress open"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"cypress": "^9.5.2"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
{{ define "main" }}
|
||||
<div class="container">
|
||||
<div class="row mt-5">
|
||||
<div class="row mt-5" data-test-id="tag-button-row">
|
||||
{{ $currURL := .RelPermalink }}
|
||||
<div class="col-6 col-md-auto mb-2 mt-2">
|
||||
<a role="button" class="btn btn-tags{{ if strings.HasSuffix $currURL "/blog/" }} active{{ end }}" href="/blog">
|
||||
<a role="button" data-test-id="tag-button-all" class="btn btn-tags{{ if strings.HasSuffix $currURL "/blog/" }} active{{ end }}" href="/blog">
|
||||
All Categories
|
||||
</a>
|
||||
</div>
|
||||
{{ range $name, $taxonomy := .Site.Taxonomies.tags }}
|
||||
{{ with $.Site.GetPage (printf "/tags/%s" $name) }}
|
||||
<div class="col-6 col-md-auto mb-2 mt-2">
|
||||
<a role="button" class="btn btn-tags{{ if strings.HasSuffix $currURL (printf "/%s/" $name) }} active{{ end }}" href="{{ .RelPermalink }}">
|
||||
<a role="button" data-test-id="tag-button" class="btn btn-tags{{ if strings.HasSuffix $currURL (printf "/%s/" $name) }} active{{ end }}" href="{{ .RelPermalink }}">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="container pt-5 pb-5">
|
||||
<div class="row">
|
||||
<div class="row" data-test-id="about-section">
|
||||
<div class="col-md-4 mb-3 mb-md-0 d-flex align-items-center">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
<div class="vGap100"></div>
|
||||
<div class="container-fluid polygon">
|
||||
<div class="container pt-5 pb-5">
|
||||
<div class="row">
|
||||
<div class="row" data-test-id="progress-report-section">
|
||||
<div class="col-md-4 mt-5 mt-md-0 mb-5 mb-md-0 d-flex align-items-center">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
|
@ -119,7 +119,7 @@
|
|||
<div class="vGap100"></div>
|
||||
<div class="container-fluid">
|
||||
<div class="container pt-5 pb-5">
|
||||
<div class="row flex-column-reverse flex-md-row">
|
||||
<div class="row flex-column-reverse flex-md-row" data-test-id="blog-post-section">
|
||||
<div class="col-md-8">
|
||||
<div class="container">
|
||||
<div class="row mt-3">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{{ define "main" }}
|
||||
<div class="container">
|
||||
<div class="row mt-5">
|
||||
<h2>Compatiblity List</h2>
|
||||
<h2>Compatibility List</h2>
|
||||
</div>
|
||||
<div class="row mt-3">
|
||||
<p>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
</nav>
|
||||
<div class="row mb-3 mt-3" id="outage-alert" style="display: none;">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card" data-test-id="downtime-notification">
|
||||
<div class="row">
|
||||
<div class="col card-title">
|
||||
<h3><i class="fas fa-exclamation-triangle error-icon"></i>Unable to fetch release information. This can be
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
for setting
|
||||
up the release is included in the download. For information on how to get started with using PCSX2 (Dumping your
|
||||
BIOS and games),
|
||||
<a href="/guides/basic-setup">see the following guide</a>.
|
||||
<a href="/guides/basic-setup" data-test-id="setup-guide">see the following guide</a>.
|
||||
</p>
|
||||
<p>
|
||||
If you encounter issues on the latest stable release, you can reach out for assistance on the <a
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
<div id="latest-release-notes"></div>
|
||||
</div>
|
||||
<div class="row mt-5 d-flex justify-content-center" id="latest-release-artifacts"></div>
|
||||
<div class="row skeleton-wrapper">
|
||||
<div class="row skeleton-wrapper" data-test-id="latest-release-artifacts-loading">
|
||||
<div class="col-12 col-sm mb-4 d-flex justify-content-center">
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-primary artifact-dropdown btn-lg dropdown-toggle" type="button" id="dropdownMenuButton"
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
Nightly builds are based on the latest in-developement version. As a result, these releases are intended
|
||||
for those who want to, or require, being on the bleeding edge. They may contain unresolved bugs or issues,
|
||||
use at your own discretion with this in mind. For information on how to get started with using PCSX2 (Dumping
|
||||
your BIOS and games), <a href="/guides/basic-setup">see the following guide</a>.
|
||||
your BIOS and games), <a href="/guides/basic-setup" data-test-id="setup-guide">see the following guide</a>.
|
||||
</p>
|
||||
<p>
|
||||
For information on how to use the nightly releases <a
|
||||
|
|
@ -126,7 +126,7 @@
|
|||
<div id="latest-nightly-notes"></div>
|
||||
</div>
|
||||
<div class="row mt-5 d-flex justify-content-center" id="latest-nightly-artifacts"></div>
|
||||
<div class="row skeleton-wrapper">
|
||||
<div class="row skeleton-wrapper" data-test-id="latest-nightly-artifacts-loading">
|
||||
<div class="col-12 col-sm mb-4 d-flex justify-content-center">
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-primary artifact-dropdown btn-lg dropdown-toggle" type="button" id="dropdownMenuButton"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<nav class="navbar navbar-dark bg-faded sticky-top justify-content-center navbar-expand-lg">
|
||||
<div class="container pl-5">
|
||||
<a class="navbar-brand d-block d-lg-none" href="/">
|
||||
<a class="navbar-brand d-block d-lg-none" href="/" data-test-id="navbar-brand-mobile">
|
||||
<img class="brand-logo lazy" data-src="/img/pcsx2-logo.webp" alt="PCSX2 Logo">
|
||||
PCSX2
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ let rowTemplate = doT.template(`
|
|||
</td>
|
||||
<td class="table-no-wrap">
|
||||
<span>
|
||||
{{? it.links && it.links.wikiLink && it.links.forumLink }}
|
||||
{{? it.links }}
|
||||
{{? it.links.wikiLink }}
|
||||
<a href="{{=it.links.wikiLink}}"><i class="fa-solid fa-circle-info"></i></a>
|
||||
{{?}}
|
||||
|
|
@ -265,7 +265,7 @@ function renderTable() {
|
|||
|
||||
// Handle no results uniquely
|
||||
if (currentData.length <= 0) {
|
||||
tableBody.innerHTML = `<tr style="align-content: center;text-align: center;"><td colspan="5">No Results Found</object></td></tr>`;
|
||||
tableBody.innerHTML = `<tr style="align-content: center;text-align: center;"><td colspan="6">No Results Found</object></td></tr>`;
|
||||
}
|
||||
else {
|
||||
let offset = currentPage * pageSize;
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ $('document').ready(async function () {
|
|||
renderLatestRelease(latestRelease, "#latest-release-artifacts");
|
||||
}
|
||||
|
||||
if ('stableReleases' in releasesAndBuilds && releasesAndBuilds.stableReleases.data.length > 1) {
|
||||
if ('stableReleases' in releasesAndBuilds) {
|
||||
prevStableReleases = releasesAndBuilds.stableReleases.data;
|
||||
totalPrevStable = releasesAndBuilds.stableReleases.pageInfo.total;
|
||||
renderPreviousReleases("stable", true);
|
||||
|
|
@ -168,13 +168,13 @@ $('document').ready(async function () {
|
|||
renderLatestRelease(latestNightly, "#latest-nightly-artifacts");
|
||||
}
|
||||
|
||||
if ('nightlyReleases' in releasesAndBuilds && releasesAndBuilds.nightlyReleases.data.length > 1) {
|
||||
if ('nightlyReleases' in releasesAndBuilds) {
|
||||
prevNightlies = releasesAndBuilds.nightlyReleases.data;
|
||||
totalPrevNightly = releasesAndBuilds.nightlyReleases.pageInfo.total;
|
||||
renderPreviousReleases("nightly", true);
|
||||
}
|
||||
|
||||
if ('pullRequestBuilds' in releasesAndBuilds && releasesAndBuilds.pullRequestBuilds.data.length > 0) {
|
||||
if ('pullRequestBuilds' in releasesAndBuilds) {
|
||||
passingPRs = releasesAndBuilds.pullRequestBuilds.data;
|
||||
totalPullRequests = releasesAndBuilds.pullRequestBuilds.pageInfo.total;
|
||||
renderPullRequests(true);
|
||||
|
|
@ -237,7 +237,7 @@ function renderPreviousReleases(category, noScroll) {
|
|||
if (previousReleases.length == 0) {
|
||||
$(selector).html(tableMessage({
|
||||
colspan: 4,
|
||||
message: "No Previous Releases to Display!"
|
||||
message: "No Releases to Display!"
|
||||
}));
|
||||
return;
|
||||
}
|
||||
|
|
@ -301,7 +301,7 @@ function renderPullRequests(noScroll) {
|
|||
if (passingPRs.length == 0) {
|
||||
$("#pull-request-table-body").html(tableMessage({
|
||||
colspan: 5,
|
||||
message: "No Previous Releases to Display!"
|
||||
message: "No Pull Requests to Display!"
|
||||
}));
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue