From d31da0a24992bcfee78f74660e7430e614c7dade Mon Sep 17 00:00:00 2001 From: tidusjar Date: Tue, 9 Mar 2021 15:01:43 +0000 Subject: [PATCH 01/43] Added automation --- .github/workflows/cypress.yml | 35 + .../app/wizard/welcome/welcome.component.html | 12 +- tests/.gitignore | 15 + tests/cypress.json | 19 + tests/cypress/config/demo.json | 20 + tests/cypress/config/regression.json | 25 + .../cypress/fixtures/details/tv/response.json | 2730 +++++++++++++++++ .../details/tv/streamingResponse.json | 12 + tests/cypress/fixtures/example.json | 5 + .../fixtures/login/authenticationSettngs.json | 10 + .../fixtures/login/landingPageSettings.json | 10 + .../integration/examples/actions.spec.js | 299 ++ .../integration/examples/aliasing.spec.js | 39 + .../integration/examples/assertions.spec.js | 177 ++ .../integration/examples/connectors.spec.js | 97 + .../integration/examples/cookies.spec.js | 77 + .../integration/examples/cypress_api.spec.js | 202 ++ .../integration/examples/files.spec.js | 89 + .../examples/local_storage.spec.js | 52 + .../integration/examples/location.spec.js | 32 + .../cypress/integration/examples/misc.spec.js | 104 + .../integration/examples/navigation.spec.js | 56 + .../examples/network_requests.spec.js | 163 + .../integration/examples/querying.spec.js | 114 + .../examples/spies_stubs_clocks.spec.js | 205 ++ .../integration/examples/traversal.spec.js | 121 + .../integration/examples/utilities.spec.js | 110 + .../integration/examples/viewport.spec.js | 59 + .../integration/examples/waiting.spec.js | 31 + .../integration/examples/window.spec.js | 22 + tests/cypress/interfaces/IClaims.ts | 4 + tests/cypress/plugins/index.js | 21 + tests/cypress/support/commands.ts | 91 + tests/cypress/support/index.ts | 21 + tests/cypress/support/request.commands.ts | 50 + .../details/tv/tvdetails-buttons.spec.ts | 83 + .../details/tv/tvdetails-info-panel.spec.ts | 35 + tests/cypress/tests/login/login.spec.ts | 83 + .../usermanagement/usermanagement.spec.ts | 163 + tests/cypress/tests/wizard/01-wizard.spec.ts | 49 + tests/global.d.ts | 20 + tests/package.json | 22 + tests/tsconfig.json | 15 + tests/yarn.lock | 1420 +++++++++ 44 files changed, 7013 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/cypress.yml create mode 100644 tests/.gitignore create mode 100644 tests/cypress.json create mode 100644 tests/cypress/config/demo.json create mode 100644 tests/cypress/config/regression.json create mode 100644 tests/cypress/fixtures/details/tv/response.json create mode 100644 tests/cypress/fixtures/details/tv/streamingResponse.json create mode 100644 tests/cypress/fixtures/example.json create mode 100644 tests/cypress/fixtures/login/authenticationSettngs.json create mode 100644 tests/cypress/fixtures/login/landingPageSettings.json create mode 100644 tests/cypress/integration/examples/actions.spec.js create mode 100644 tests/cypress/integration/examples/aliasing.spec.js create mode 100644 tests/cypress/integration/examples/assertions.spec.js create mode 100644 tests/cypress/integration/examples/connectors.spec.js create mode 100644 tests/cypress/integration/examples/cookies.spec.js create mode 100644 tests/cypress/integration/examples/cypress_api.spec.js create mode 100644 tests/cypress/integration/examples/files.spec.js create mode 100644 tests/cypress/integration/examples/local_storage.spec.js create mode 100644 tests/cypress/integration/examples/location.spec.js create mode 100644 tests/cypress/integration/examples/misc.spec.js create mode 100644 tests/cypress/integration/examples/navigation.spec.js create mode 100644 tests/cypress/integration/examples/network_requests.spec.js create mode 100644 tests/cypress/integration/examples/querying.spec.js create mode 100644 tests/cypress/integration/examples/spies_stubs_clocks.spec.js create mode 100644 tests/cypress/integration/examples/traversal.spec.js create mode 100644 tests/cypress/integration/examples/utilities.spec.js create mode 100644 tests/cypress/integration/examples/viewport.spec.js create mode 100644 tests/cypress/integration/examples/waiting.spec.js create mode 100644 tests/cypress/integration/examples/window.spec.js create mode 100644 tests/cypress/interfaces/IClaims.ts create mode 100644 tests/cypress/plugins/index.js create mode 100644 tests/cypress/support/commands.ts create mode 100644 tests/cypress/support/index.ts create mode 100644 tests/cypress/support/request.commands.ts create mode 100644 tests/cypress/tests/details/tv/tvdetails-buttons.spec.ts create mode 100644 tests/cypress/tests/details/tv/tvdetails-info-panel.spec.ts create mode 100644 tests/cypress/tests/login/login.spec.ts create mode 100644 tests/cypress/tests/usermanagement/usermanagement.spec.ts create mode 100644 tests/cypress/tests/wizard/01-wizard.spec.ts create mode 100644 tests/global.d.ts create mode 100644 tests/package.json create mode 100644 tests/tsconfig.json create mode 100644 tests/yarn.lock diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml new file mode 100644 index 000000000..1449e6cb4 --- /dev/null +++ b/.github/workflows/cypress.yml @@ -0,0 +1,35 @@ +name: .NET + +on: + push: + branches: [ feature/automation ] + pull_request: + branches: [ feature/automation ] + +jobs: + automation-tests: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 5.0.x + - name: Run backend + run: dotnet run -p ./src/Ombi -- --host http://*:3575 + - name: Run Frontend + uses: borales/actions-yarn@v2.0.0 + with: + cmd: start --cwd ./src/ombi/clientapp + + - name: Cypress Tests + uses: cypress-io/github-action@v2.8.2 + with: + browser: chrome + headless: true + project: ./tests + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + diff --git a/src/Ombi/ClientApp/src/app/wizard/welcome/welcome.component.html b/src/Ombi/ClientApp/src/app/wizard/welcome/welcome.component.html index c1189051c..7ca3de4ce 100644 --- a/src/Ombi/ClientApp/src/app/wizard/welcome/welcome.component.html +++ b/src/Ombi/ClientApp/src/app/wizard/welcome/welcome.component.html @@ -25,7 +25,7 @@
- +
@@ -39,16 +39,16 @@ - + - +
Create a local admin
- +
@@ -58,7 +58,7 @@
- +
@@ -77,7 +77,7 @@
- +
diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 000000000..0361ba0b4 --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,15 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules + +# misc +.DS_Store +.idea + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +cypress/videos +cypress/screenshots diff --git a/tests/cypress.json b/tests/cypress.json new file mode 100644 index 000000000..d08128874 --- /dev/null +++ b/tests/cypress.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://on.cypress.io/cypress.schema.json", + "supportFile": "cypress/support/index.ts", + "baseUrl": "http://localhost:3577", + "integrationFolder": "cypress/tests", + "testFiles": "**/*.spec.ts*", + "watchForFileChanges": true, + "chromeWebSecurity": false, + "viewportWidth": 2560, + "viewportHeight": 1440, + "ignoreTestFiles": [ + "**/snapshots/*" + ], + "env": { + "username": "a", + "password": "a" + }, + "projectId": "o5451s" +} diff --git a/tests/cypress/config/demo.json b/tests/cypress/config/demo.json new file mode 100644 index 000000000..d9fafcab8 --- /dev/null +++ b/tests/cypress/config/demo.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://on.cypress.io/cypress.schema.json", + "supportFile": "cypress/support/index.ts", + "baseUrl": "https://app.ombi.io/", + "integrationFolder": "cypress/tests", + "testFiles": "**/*.spec.ts*", + "retries": { + "runMode": 2, + "openMode": 1 + }, + "watchForFileChanges": true, + "chromeWebSecurity": false, + "viewportWidth": 2880, + "viewportHeight": 2160, + "ignoreTestFiles": ["**/snapshots/*"], + "env": { + "username": "beta", + "password": "beta" + } +} diff --git a/tests/cypress/config/regression.json b/tests/cypress/config/regression.json new file mode 100644 index 000000000..213244b8c --- /dev/null +++ b/tests/cypress/config/regression.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://on.cypress.io/cypress.schema.json", + "supportFile": "cypress/support/index.ts", + "integrationFolder": "cypress/tests", + "testFiles": "**/*.spec.ts*", + "retries": { + "runMode": 2, + "openMode": 1 + }, + "watchForFileChanges": true, + "chromeWebSecurity": false, + "viewportWidth": 2880, + "viewportHeight": 2160, + "ignoreTestFiles": ["**/snapshots/*"], + "screenshotOnRunFailure": false, + "video": false, + "reporter": "junit", + "reporterOptions": { + "mochaFile": "results/junit/regression-[hash].xml" + }, + "env": { + "username": "beta", + "password": "beta" + } +} diff --git a/tests/cypress/fixtures/details/tv/response.json b/tests/cypress/fixtures/details/tv/response.json new file mode 100644 index 000000000..ff4f7981d --- /dev/null +++ b/tests/cypress/fixtures/details/tv/response.json @@ -0,0 +1,2730 @@ +{ + "title": "Game of Thrones", + "aliases": null, + "banner": "https://static.tvmaze.com/uploads/images/medium_portrait/190/476117.jpg", + "seriesId": 82, + "status": "Ended", + "firstAired": "2011-04-17", + "networkId": "8", + "runtime": "60", + "genre": null, + "overview": "Based on the bestselling book series A Song of Ice and Fire by George R.R. Martin, this sprawling new HBO drama is set in a world where summers span decades and winters can last a lifetime. From the scheming south and the savage eastern lands, to the frozen north and ancient Wall that protects the realm from the mysterious darkness beyond, the powerful families of the Seven Kingdoms are locked in a battle for the Iron Throne. This is a story of duplicity and treachery, nobility and honor, conquest and triumph. In the Game of Thrones, you either win or you die.", + "lastUpdated": 0, + "airsDayOfWeek": null, + "airsTime": null, + "rating": "9.1", + "siteRating": 0, + "network": { + "id": 8, + "name": "HBO", + "country": { + "name": "United States", + "code": "US", + "timezone": "America/New_York" + } + }, + "images": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/190/476117.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/190/476117.jpg" + }, + "cast": [ + { + "person": { + "id": 14072, + "url": "https://www.tvmaze.com/people/14072/peter-dinklage", + "name": "Peter Dinklage", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/74/186607.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/74/186607.jpg" + } + }, + "character": { + "id": 15604, + "url": "https://www.tvmaze.com/characters/15604/game-of-thrones-tyrion-lannister", + "name": "Tyrion Lannister", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158804.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158804.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14075, + "url": "https://www.tvmaze.com/people/14075/kit-harington", + "name": "Kit Harington", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3229.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3229.jpg" + } + }, + "character": { + "id": 15607, + "url": "https://www.tvmaze.com/characters/15607/game-of-thrones-jon-snow", + "name": "Jon Snow", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158800.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158800.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14076, + "url": "https://www.tvmaze.com/people/14076/lena-headey", + "name": "Lena Headey", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/97/244409.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/97/244409.jpg" + } + }, + "character": { + "id": 15608, + "url": "https://www.tvmaze.com/characters/15608/game-of-thrones-queen-cersei-lannister", + "name": "Queen Cersei Lannister", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158806.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158806.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14079, + "url": "https://www.tvmaze.com/people/14079/emilia-clarke", + "name": "Emilia Clarke", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/54/136753.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/54/136753.jpg" + } + }, + "character": { + "id": 15611, + "url": "https://www.tvmaze.com/characters/15611/game-of-thrones-daenerys-targaryen", + "name": "Daenerys Targaryen", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158798.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158798.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14080, + "url": "https://www.tvmaze.com/people/14080/sophie-turner", + "name": "Sophie Turner", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/82/205626.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/82/205626.jpg" + } + }, + "character": { + "id": 15612, + "url": "https://www.tvmaze.com/characters/15612/game-of-thrones-sansa-stark", + "name": "Sansa Stark", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158812.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158812.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14081, + "url": "https://www.tvmaze.com/people/14081/maisie-williams", + "name": "Maisie Williams", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/282/706106.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/282/706106.jpg" + } + }, + "character": { + "id": 15613, + "url": "https://www.tvmaze.com/characters/15613/game-of-thrones-arya-stark", + "name": "Arya Stark", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/64/162189.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/64/162189.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14070, + "url": "https://www.tvmaze.com/people/14070/nikolaj-coster-waldau", + "name": "Nikolaj Coster-Waldau", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/62/155678.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/62/155678.jpg" + } + }, + "character": { + "id": 15602, + "url": "https://www.tvmaze.com/characters/15602/game-of-thrones-ser-jaime-lannister", + "name": "Ser Jaime Lannister", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/64/162190.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/64/162190.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14074, + "url": "https://www.tvmaze.com/people/14074/iain-glen", + "name": "Iain Glen", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3233.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3233.jpg" + } + }, + "character": { + "id": 15606, + "url": "https://www.tvmaze.com/characters/15606/game-of-thrones-ser-jorah-mormont", + "name": "Ser Jorah Mormont", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/1457.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/1457.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14069, + "url": "https://www.tvmaze.com/people/14069/alfie-allen", + "name": "Alfie Allen", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3235.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3235.jpg" + } + }, + "character": { + "id": 15600, + "url": "https://www.tvmaze.com/characters/15600/game-of-thrones-theon-greyjoy", + "name": "Theon Greyjoy", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/599.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/599.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14090, + "url": "https://www.tvmaze.com/people/14090/john-bradley", + "name": "John Bradley", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3242.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3242.jpg" + } + }, + "character": { + "id": 15623, + "url": "https://www.tvmaze.com/characters/15623/game-of-thrones-samwell-tarly", + "name": "Samwell Tarly", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/591.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/591.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14085, + "url": "https://www.tvmaze.com/people/14085/conleth-hill", + "name": "Conleth Hill", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3247.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3247.jpg" + } + }, + "character": { + "id": 15617, + "url": "https://www.tvmaze.com/characters/15617/game-of-thrones-lord-varys", + "name": "Lord Varys", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/596.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/596.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14086, + "url": "https://www.tvmaze.com/people/14086/gwendoline-christie", + "name": "Gwendoline Christie", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/136/340397.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/136/340397.jpg" + } + }, + "character": { + "id": 15618, + "url": "https://www.tvmaze.com/characters/15618/game-of-thrones-brienne-of-tarth", + "name": "Brienne of Tarth", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/593.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/593.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14092, + "url": "https://www.tvmaze.com/people/14092/liam-cunningham", + "name": "Liam Cunningham", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3260.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3260.jpg" + } + }, + "character": { + "id": 15625, + "url": "https://www.tvmaze.com/characters/15625/game-of-thrones-davos-seaworth", + "name": "Davos Seaworth", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/594.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/594.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14083, + "url": "https://www.tvmaze.com/people/14083/aidan-gillen", + "name": "Aidan Gillen", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3240.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3240.jpg" + } + }, + "character": { + "id": 15615, + "url": "https://www.tvmaze.com/characters/15615/game-of-thrones-petyr-littlefinger-baelish", + "name": "Petyr \"Littlefinger\" Baelish", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/1463.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/1463.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14082, + "url": "https://www.tvmaze.com/people/14082/isaac-hempstead-wright", + "name": "Isaac Hempstead-Wright", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3238.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3238.jpg" + } + }, + "character": { + "id": 15614, + "url": "https://www.tvmaze.com/characters/15614/game-of-thrones-bran-stark", + "name": "Bran Stark", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158816.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158816.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14394, + "url": "https://www.tvmaze.com/people/14394/nathalie-emmanuel", + "name": "Nathalie Emmanuel", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/93/234475.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/93/234475.jpg" + } + }, + "character": { + "id": 15974, + "url": "https://www.tvmaze.com/characters/15974/game-of-thrones-missandei", + "name": "Missandei", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/611.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/611.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14071, + "url": "https://www.tvmaze.com/people/14071/rory-mccann", + "name": "Rory McCann", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3236.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3236.jpg" + } + }, + "character": { + "id": 15603, + "url": "https://www.tvmaze.com/characters/15603/game-of-thrones-sandor-clegane", + "name": "Sandor Clegane", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158819.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158819.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14088, + "url": "https://www.tvmaze.com/people/14088/jerome-flynn", + "name": "Jerome Flynn", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3259.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3259.jpg" + } + }, + "character": { + "id": 15621, + "url": "https://www.tvmaze.com/characters/15621/game-of-thrones-bronn", + "name": "Bronn", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/592.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/592.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14417, + "url": "https://www.tvmaze.com/people/14417/jacob-anderson", + "name": "Jacob Anderson", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/8/20737.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/8/20737.jpg" + } + }, + "character": { + "id": 15997, + "url": "https://www.tvmaze.com/characters/15997/game-of-thrones-grey-worm", + "name": "Grey Worm", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/172/431759.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/172/431759.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14091, + "url": "https://www.tvmaze.com/people/14091/kristofer-hivju", + "name": "Kristofer Hivju", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3330.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3330.jpg" + } + }, + "character": { + "id": 15624, + "url": "https://www.tvmaze.com/characters/15624/game-of-thrones-tormund-giantsbane", + "name": "Tormund Giantsbane", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3169.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3169.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14084, + "url": "https://www.tvmaze.com/people/14084/carice-van-houten", + "name": "Carice van Houten", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3261.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3261.jpg" + } + }, + "character": { + "id": 15616, + "url": "https://www.tvmaze.com/characters/15616/game-of-thrones-melisandre", + "name": "Melisandre", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/172/431775.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/172/431775.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14065, + "url": "https://www.tvmaze.com/people/14065/charles-dance", + "name": "Charles Dance", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/168/422293.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/168/422293.jpg" + } + }, + "character": { + "id": 15596, + "url": "https://www.tvmaze.com/characters/15596/game-of-thrones-lord-tywin-lannister", + "name": "Lord Tywin Lannister", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/602.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/602.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14066, + "url": "https://www.tvmaze.com/people/14066/natalie-dormer", + "name": "Natalie Dormer", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/243/608117.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/243/608117.jpg" + } + }, + "character": { + "id": 15597, + "url": "https://www.tvmaze.com/characters/15597/game-of-thrones-queen-margaery-tyrell", + "name": "Queen Margaery Tyrell", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/211/529552.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/211/529552.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14073, + "url": "https://www.tvmaze.com/people/14073/jack-gleeson", + "name": "Jack Gleeson", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3237.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3237.jpg" + } + }, + "character": { + "id": 15605, + "url": "https://www.tvmaze.com/characters/15605/game-of-thrones-prince-joffrey-baratheon", + "name": "Prince Joffrey Baratheon", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158821.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158821.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14199, + "url": "https://www.tvmaze.com/people/14199/hannah-murray", + "name": "Hannah Murray", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/7/18055.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/7/18055.jpg" + } + }, + "character": { + "id": 15720, + "url": "https://www.tvmaze.com/characters/15720/game-of-thrones-gilly", + "name": "Gilly", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/192/482446.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/192/482446.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14078, + "url": "https://www.tvmaze.com/people/14078/michelle-fairley", + "name": "Michelle Fairley", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/186/466394.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/186/466394.jpg" + } + }, + "character": { + "id": 15610, + "url": "https://www.tvmaze.com/characters/15610/game-of-thrones-lady-catelyn-stark", + "name": "Lady Catelyn Stark", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158823.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158823.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14404, + "url": "https://www.tvmaze.com/people/14404/dean-charles-chapman", + "name": "Dean Charles Chapman", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/2/5727.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/2/5727.jpg" + } + }, + "character": { + "id": 15632, + "url": "https://www.tvmaze.com/characters/15632/game-of-thrones-tommen-baratheon", + "name": "Tommen Baratheon", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/603.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/603.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14089, + "url": "https://www.tvmaze.com/people/14089/joe-dempsie", + "name": "Joe Dempsie", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/185/462746.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/185/462746.jpg" + } + }, + "character": { + "id": 15622, + "url": "https://www.tvmaze.com/characters/15622/game-of-thrones-gendry", + "name": "Gendry", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/589.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/589.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14096, + "url": "https://www.tvmaze.com/people/14096/stephen-dillane", + "name": "Stephen Dillane", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/68/171092.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/68/171092.jpg" + } + }, + "character": { + "id": 15629, + "url": "https://www.tvmaze.com/characters/15629/game-of-thrones-stannis-baratheon", + "name": "Stannis Baratheon", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3245.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3245.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14077, + "url": "https://www.tvmaze.com/people/14077/richard-madden", + "name": "Richard Madden", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/173/434079.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/173/434079.jpg" + } + }, + "character": { + "id": 15609, + "url": "https://www.tvmaze.com/characters/15609/game-of-thrones-robb-stark", + "name": "Robb Stark", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/63/158825.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/63/158825.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14218, + "url": "https://www.tvmaze.com/people/14218/michael-mcelhatton", + "name": "Michael McElhatton", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/3/8123.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/3/8123.jpg" + } + }, + "character": { + "id": 15739, + "url": "https://www.tvmaze.com/characters/15739/game-of-thrones-lord-roose-bolton", + "name": "Lord Roose Bolton", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/609.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/609.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 7267, + "url": "https://www.tvmaze.com/people/7267/michiel-huisman", + "name": "Michiel Huisman", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/8/20724.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/8/20724.jpg" + } + }, + "character": { + "id": 16007, + "url": "https://www.tvmaze.com/characters/16007/game-of-thrones-daario-naharis", + "name": "Daario Naharis", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/9/23151.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/9/23151.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14095, + "url": "https://www.tvmaze.com/people/14095/sibel-kekilli", + "name": "Sibel Kekilli", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3244.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3244.jpg" + } + }, + "character": { + "id": 15628, + "url": "https://www.tvmaze.com/characters/15628/game-of-thrones-shae", + "name": "Shae", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/211/529553.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/211/529553.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14087, + "url": "https://www.tvmaze.com/people/14087/iwan-rheon", + "name": "Iwan Rheon", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/158/396043.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/158/396043.jpg" + } + }, + "character": { + "id": 15619, + "url": "https://www.tvmaze.com/characters/15619/game-of-thrones-ramsay-snow", + "name": "Ramsay Snow", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3331.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3331.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14208, + "url": "https://www.tvmaze.com/people/14208/tom-wlaschiha", + "name": "Tom Wlaschiha", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/4/10120.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/4/10120.jpg" + } + }, + "character": { + "id": 15730, + "url": "https://www.tvmaze.com/characters/15730/game-of-thrones-jaqen-hghar", + "name": "Jaqen H'ghar", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/211/529595.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/211/529595.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14094, + "url": "https://www.tvmaze.com/people/14094/rose-leslie", + "name": "Rose Leslie", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/107/267661.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/107/267661.jpg" + } + }, + "character": { + "id": 15627, + "url": "https://www.tvmaze.com/characters/15627/game-of-thrones-ygritte", + "name": "Ygritte", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/211/529550.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/211/529550.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14440, + "url": "https://www.tvmaze.com/people/14440/indira-varma", + "name": "Indira Varma", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/3/8666.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/3/8666.jpg" + } + }, + "character": { + "id": 16022, + "url": "https://www.tvmaze.com/characters/16022/game-of-thrones-ellaria-sand", + "name": "Ellaria Sand", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/9/23152.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/9/23152.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 52759, + "url": "https://www.tvmaze.com/people/52759/jonathan-pryce", + "name": "Jonathan Pryce", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/92/231635.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/92/231635.jpg" + } + }, + "character": { + "id": 105050, + "url": "https://www.tvmaze.com/characters/105050/game-of-thrones-high-sparrow", + "name": "High Sparrow", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/11/28572.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/11/28572.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 7432, + "url": "https://www.tvmaze.com/people/7432/sean-bean", + "name": "Sean Bean", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3294.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3294.jpg" + } + }, + "character": { + "id": 15601, + "url": "https://www.tvmaze.com/characters/15601/game-of-thrones-lord-eddard-stark", + "name": "Lord Eddard Stark", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/211/529531.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/211/529531.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 11349, + "url": "https://www.tvmaze.com/people/11349/james-cosmo", + "name": "James Cosmo", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/181/453032.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/181/453032.jpg" + } + }, + "character": { + "id": 15620, + "url": "https://www.tvmaze.com/characters/15620/game-of-thrones-lord-commander-jeor-mormont", + "name": "Lord Commander Jeor Mormont", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/211/529534.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/211/529534.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14068, + "url": "https://www.tvmaze.com/people/14068/mark-addy", + "name": "Mark Addy", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3324.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3324.jpg" + } + }, + "character": { + "id": 15599, + "url": "https://www.tvmaze.com/characters/15599/game-of-thrones-king-robert-baratheon", + "name": "King Robert Baratheon", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/598.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/598.jpg" + } + }, + "self": false, + "voice": false + }, + { + "person": { + "id": 14067, + "url": "https://www.tvmaze.com/people/14067/harry-lloyd", + "name": "Harry Lloyd", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/1/3329.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/1/3329.jpg" + } + }, + "character": { + "id": 15598, + "url": "https://www.tvmaze.com/characters/15598/game-of-thrones-viserys-targaryen", + "name": "Viserys Targaryen", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/0/600.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/0/600.jpg" + } + }, + "self": false, + "voice": false + } + ], + "crew": [ + { + "type": "Executive Producer", + "person": { + "id": 282, + "url": "https://www.tvmaze.com/people/282/david-nutter", + "name": "David Nutter", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/182/455179.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/182/455179.jpg" + } + } + }, + { + "type": "Creator", + "person": { + "id": 14097, + "url": "https://www.tvmaze.com/people/14097/db-weiss", + "name": "D.B. Weiss", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/58/146139.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/58/146139.jpg" + } + } + }, + { + "type": "Executive Producer", + "person": { + "id": 14097, + "url": "https://www.tvmaze.com/people/14097/db-weiss", + "name": "D.B. Weiss", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/58/146139.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/58/146139.jpg" + } + } + }, + { + "type": "Creator", + "person": { + "id": 14098, + "url": "https://www.tvmaze.com/people/14098/david-benioff", + "name": "David Benioff", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/121/303084.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/121/303084.jpg" + } + } + }, + { + "type": "Executive Producer", + "person": { + "id": 14098, + "url": "https://www.tvmaze.com/people/14098/david-benioff", + "name": "David Benioff", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/121/303084.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/121/303084.jpg" + } + } + }, + { + "type": "Co-Executive Producer", + "person": { + "id": 14100, + "url": "https://www.tvmaze.com/people/14100/guymon-casady", + "name": "Guymon Casady", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/214/536938.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/214/536938.jpg" + } + } + }, + { + "type": "Co-Executive Producer", + "person": { + "id": 14101, + "url": "https://www.tvmaze.com/people/14101/vince-gerardis", + "name": "Vince Gerardis", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/33/84303.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/33/84303.jpg" + } + } + }, + { + "type": "Co-Executive Producer", + "person": { + "id": 14102, + "url": "https://www.tvmaze.com/people/14102/ralph-m-vicinanza", + "name": "Ralph M. Vicinanza", + "image": null + } + }, + { + "type": "Co-Executive Producer", + "person": { + "id": 14103, + "url": "https://www.tvmaze.com/people/14103/carolyn-strauss", + "name": "Carolyn Strauss", + "image": null + } + }, + { + "type": "Executive Producer", + "person": { + "id": 14103, + "url": "https://www.tvmaze.com/people/14103/carolyn-strauss", + "name": "Carolyn Strauss", + "image": null + } + }, + { + "type": "Co-Producer", + "person": { + "id": 14104, + "url": "https://www.tvmaze.com/people/14104/greg-spence", + "name": "Greg Spence", + "image": null + } + }, + { + "type": "Producer", + "person": { + "id": 14104, + "url": "https://www.tvmaze.com/people/14104/greg-spence", + "name": "Greg Spence", + "image": null + } + }, + { + "type": "Co-Producer", + "person": { + "id": 14105, + "url": "https://www.tvmaze.com/people/14105/christopher-newman", + "name": "Christopher Newman", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/199/498557.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/199/498557.jpg" + } + } + }, + { + "type": "Producer", + "person": { + "id": 14105, + "url": "https://www.tvmaze.com/people/14105/christopher-newman", + "name": "Christopher Newman", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/199/498557.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/199/498557.jpg" + } + } + }, + { + "type": "Consulting Producer", + "person": { + "id": 14106, + "url": "https://www.tvmaze.com/people/14106/thomas-mccarthy", + "name": "Thomas McCarthy", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/103/258930.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/103/258930.jpg" + } + } + }, + { + "type": "Associate Producer", + "person": { + "id": 14107, + "url": "https://www.tvmaze.com/people/14107/alan-freir", + "name": "Alan Freir", + "image": null + } + }, + { + "type": "Co-Producer", + "person": { + "id": 14107, + "url": "https://www.tvmaze.com/people/14107/alan-freir", + "name": "Alan Freir", + "image": null + } + }, + { + "type": "Associate Producer", + "person": { + "id": 14108, + "url": "https://www.tvmaze.com/people/14108/annick-wolkan", + "name": "Annick Wolkan", + "image": null + } + }, + { + "type": "Co-Producer", + "person": { + "id": 14108, + "url": "https://www.tvmaze.com/people/14108/annick-wolkan", + "name": "Annick Wolkan", + "image": null + } + }, + { + "type": "Associate Producer", + "person": { + "id": 14109, + "url": "https://www.tvmaze.com/people/14109/oliver-butler", + "name": "Oliver Butler", + "image": null + } + }, + { + "type": "Co-Producer", + "person": { + "id": 14109, + "url": "https://www.tvmaze.com/people/14109/oliver-butler", + "name": "Oliver Butler", + "image": null + } + }, + { + "type": "Associate Producer", + "person": { + "id": 14110, + "url": "https://www.tvmaze.com/people/14110/jonathan-brytus", + "name": "Jonathan Brytus", + "image": null + } + }, + { + "type": "Casting", + "person": { + "id": 14142, + "url": "https://www.tvmaze.com/people/14142/robert-sterne", + "name": "Robert Sterne", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/8/20509.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/8/20509.jpg" + } + } + }, + { + "type": "Co-Executive Producer", + "person": { + "id": 14146, + "url": "https://www.tvmaze.com/people/14146/bryan-cogman", + "name": "Bryan Cogman", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/101/254778.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/101/254778.jpg" + } + } + }, + { + "type": "Supervising Producer", + "person": { + "id": 14146, + "url": "https://www.tvmaze.com/people/14146/bryan-cogman", + "name": "Bryan Cogman", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/101/254778.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/101/254778.jpg" + } + } + }, + { + "type": "Executive Producer", + "person": { + "id": 14940, + "url": "https://www.tvmaze.com/people/14940/miguel-sapochnik", + "name": "Miguel Sapochnik", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/104/260096.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/104/260096.jpg" + } + } + }, + { + "type": "Executive Producer", + "person": { + "id": 49831, + "url": "https://www.tvmaze.com/people/49831/frank-doelger", + "name": "Frank Doelger", + "image": null + } + }, + { + "type": "Executive Producer", + "person": { + "id": 50704, + "url": "https://www.tvmaze.com/people/50704/bernadette-caulfield", + "name": "Bernadette Caulfield", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/199/498528.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/199/498528.jpg" + } + } + }, + { + "type": "Re-Recording Mixer", + "person": { + "id": 59666, + "url": "https://www.tvmaze.com/people/59666/mathew-waters", + "name": "Mathew Waters", + "image": null + } + }, + { + "type": "Co-Executive Producer", + "person": { + "id": 95525, + "url": "https://www.tvmaze.com/people/95525/george-r-r-martin", + "name": "George R. R. Martin", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/77/194417.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/77/194417.jpg" + } + } + }, + { + "type": "Based on the Novel Of", + "person": { + "id": 95525, + "url": "https://www.tvmaze.com/people/95525/george-r-r-martin", + "name": "George R. R. Martin", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/77/194417.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/77/194417.jpg" + } + } + }, + { + "type": "Supervising Sound Editor", + "person": { + "id": 97917, + "url": "https://www.tvmaze.com/people/97917/tim-kimmel", + "name": "Tim Kimmel", + "image": null + } + }, + { + "type": "Music Editor", + "person": { + "id": 98358, + "url": "https://www.tvmaze.com/people/98358/david-klotz", + "name": "David Klotz", + "image": null + } + }, + { + "type": "Music", + "person": { + "id": 98955, + "url": "https://www.tvmaze.com/people/98955/ramin-djawadi", + "name": "Ramin Djawadi", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/82/207123.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/82/207123.jpg" + } + } + }, + { + "type": "Editor", + "person": { + "id": 107088, + "url": "https://www.tvmaze.com/people/107088/yan-miles", + "name": "Yan Miles", + "image": null + } + }, + { + "type": "Casting", + "person": { + "id": 128925, + "url": "https://www.tvmaze.com/people/128925/nina-gold", + "name": "Nina Gold", + "image": null + } + }, + { + "type": "Visual Effects Supervisor", + "person": { + "id": 128926, + "url": "https://www.tvmaze.com/people/128926/joe-bauer", + "name": "Joe Bauer", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/286/715326.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/286/715326.jpg" + } + } + }, + { + "type": "Visual Effects Producer", + "person": { + "id": 128927, + "url": "https://www.tvmaze.com/people/128927/steve-kullback", + "name": "Steve Kullback", + "image": null + } + }, + { + "type": "Costume Designer", + "person": { + "id": 128928, + "url": "https://www.tvmaze.com/people/128928/april-ferry", + "name": "April Ferry", + "image": null + } + }, + { + "type": "Editor", + "person": { + "id": 128929, + "url": "https://www.tvmaze.com/people/128929/crispin-green", + "name": "Crispin Green", + "image": null + } + }, + { + "type": "Production Designer", + "person": { + "id": 128930, + "url": "https://www.tvmaze.com/people/128930/deborah-riley", + "name": "Deborah Riley", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/199/498555.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/199/498555.jpg" + } + } + }, + { + "type": "Director Of Photography", + "person": { + "id": 128931, + "url": "https://www.tvmaze.com/people/128931/gregory-middleton", + "name": "Gregory Middleton", + "image": null + } + }, + { + "type": "Producer", + "person": { + "id": 128932, + "url": "https://www.tvmaze.com/people/128932/lisa-mcatackney", + "name": "Lisa McAtackney", + "image": null + } + }, + { + "type": "Editor", + "person": { + "id": 131299, + "url": "https://www.tvmaze.com/people/131299/katie-weiland", + "name": "Katie Weiland", + "image": null + } + }, + { + "type": "Director Of Photography", + "person": { + "id": 131300, + "url": "https://www.tvmaze.com/people/131300/anette-haellmigk", + "name": "Anette Haellmigk", + "image": null + } + }, + { + "type": "Editor", + "person": { + "id": 134987, + "url": "https://www.tvmaze.com/people/134987/jesse-parker", + "name": "Jesse Parker", + "image": null + } + }, + { + "type": "Director Of Photography", + "person": { + "id": 134988, + "url": "https://www.tvmaze.com/people/134988/pj-dillon", + "name": "P.J. Dillon", + "image": null + } + }, + { + "type": "Costume Designer", + "person": { + "id": 136603, + "url": "https://www.tvmaze.com/people/136603/michele-clapton", + "name": "Michele Clapton", + "image": null + } + }, + { + "type": "Editor", + "person": { + "id": 136604, + "url": "https://www.tvmaze.com/people/136604/tim-porter", + "name": "Tim Porter", + "image": null + } + }, + { + "type": "Director Of Photography", + "person": { + "id": 136605, + "url": "https://www.tvmaze.com/people/136605/fabian-wagner", + "name": "Fabian Wagner", + "image": null + } + }, + { + "type": "Director Of Photography", + "person": { + "id": 137070, + "url": "https://www.tvmaze.com/people/137070/robert-mclachlan", + "name": "Robert McLachlan", + "image": null + } + }, + { + "type": "Music Supervisor", + "person": { + "id": 148425, + "url": "https://www.tvmaze.com/people/148425/evyen-klean", + "name": "Evyen Klean", + "image": null + } + }, + { + "type": "Casting", + "person": { + "id": 157724, + "url": "https://www.tvmaze.com/people/157724/carla-stronge", + "name": "Carla Stronge", + "image": null + } + }, + { + "type": "Re-Recording Mixer", + "person": { + "id": 161594, + "url": "https://www.tvmaze.com/people/161594/onnalee-blank", + "name": "Onnalee Blank", + "image": null + } + }, + { + "type": "Associate Producer", + "person": { + "id": 175859, + "url": "https://www.tvmaze.com/people/175859/allison-hooper", + "name": "Allison Hooper", + "image": null + } + }, + { + "type": "Co-Producer", + "person": { + "id": 176152, + "url": "https://www.tvmaze.com/people/176152/dave-hill", + "name": "Dave Hill", + "image": null + } + }, + { + "type": "Executive Story Editor", + "person": { + "id": 176152, + "url": "https://www.tvmaze.com/people/176152/dave-hill", + "name": "Dave Hill", + "image": null + } + }, + { + "type": "Unit Production Manager", + "person": { + "id": 183392, + "url": "https://www.tvmaze.com/people/183392/lisa-byrne", + "name": "Lisa Byrne", + "image": null + } + }, + { + "type": "Line Producer", + "person": { + "id": 183393, + "url": "https://www.tvmaze.com/people/183393/duncan-muggoch", + "name": "Duncan Muggoch", + "image": null + } + }, + { + "type": "Producer", + "person": { + "id": 183393, + "url": "https://www.tvmaze.com/people/183393/duncan-muggoch", + "name": "Duncan Muggoch", + "image": null + } + }, + { + "type": "Associate Producer", + "person": { + "id": 183394, + "url": "https://www.tvmaze.com/people/183394/alanna-riddell-bond", + "name": "Alanna Riddell Bond", + "image": null + } + }, + { + "type": "Re-Recording Mixer", + "person": { + "id": 183395, + "url": "https://www.tvmaze.com/people/183395/mark-paterson", + "name": "Mark Paterson", + "image": null + } + }, + { + "type": "Visual Effects Supervisor", + "person": { + "id": 232975, + "url": "https://www.tvmaze.com/people/232975/stefen-fangmeier", + "name": "Stefen Fangmeier", + "image": null + } + }, + { + "type": "Director Of Photography", + "person": { + "id": 247133, + "url": "https://www.tvmaze.com/people/247133/jonathan-freeman", + "name": "Jonathan Freeman", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/213/534277.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/213/534277.jpg" + } + } + }, + { + "type": "Director Of Photography", + "person": { + "id": 275491, + "url": "https://www.tvmaze.com/people/275491/david-franco", + "name": "David Franco", + "image": { + "medium": "https://static.tvmaze.com/uploads/images/medium_portrait/262/655879.jpg", + "original": "https://static.tvmaze.com/uploads/images/original_untouched/262/655879.jpg" + } + } + } + ], + "certification": "TV-MA", + "trailer": "https://youtube.com/watch?v=bjqEWgDVPe0", + "homepage": "https://www.hbo.com/game-of-thrones", + "seasonRequests": [ + { + "seasonNumber": 1, + "episodes": [ + { + "episodeNumber": 1, + "title": "Winter is Coming", + "airDate": "2011-04-18T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4952/game-of-thrones-1x01-winter-is-coming", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/18/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 2, + "title": "The Kingsroad", + "airDate": "2011-04-25T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4953/game-of-thrones-1x02-the-kingsroad", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/25/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 3, + "title": "Lord Snow", + "airDate": "2011-05-02T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4954/game-of-thrones-1x03-lord-snow", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/02/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 4, + "title": "Cripples, Bastards, and Broken Things", + "airDate": "2011-05-09T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4955/game-of-thrones-1x04-cripples-bastards-and-broken-things", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/09/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 5, + "title": "The Wolf and the Lion", + "airDate": "2011-05-16T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4956/game-of-thrones-1x05-the-wolf-and-the-lion", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/16/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 6, + "title": "A Golden Crown", + "airDate": "2011-05-23T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4957/game-of-thrones-1x06-a-golden-crown", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/23/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 7, + "title": "You Win or You Die", + "airDate": "2011-05-30T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4958/game-of-thrones-1x07-you-win-or-you-die", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/30/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 8, + "title": "The Pointy End", + "airDate": "2011-06-06T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4959/game-of-thrones-1x08-the-pointy-end", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/06/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 9, + "title": "Baelor", + "airDate": "2011-06-13T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4960/game-of-thrones-1x09-baelor", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/13/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 10, + "title": "Fire and Blood", + "airDate": "2011-06-20T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4961/game-of-thrones-1x10-fire-and-blood", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/20/2011 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + } + ], + "childRequestId": 0, + "childRequest": null, + "seasonAvailable": true, + "id": 0 + }, + { + "seasonNumber": 2, + "episodes": [ + { + "episodeNumber": 1, + "title": "The North Remembers", + "airDate": "2012-04-02T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4962/game-of-thrones-2x01-the-north-remembers", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/02/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 2, + "title": "The Night Lands", + "airDate": "2012-04-09T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4963/game-of-thrones-2x02-the-night-lands", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/09/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 3, + "title": "What is Dead May Never Die", + "airDate": "2012-04-16T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4964/game-of-thrones-2x03-what-is-dead-may-never-die", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/16/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 4, + "title": "Garden of Bones", + "airDate": "2012-04-23T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4965/game-of-thrones-2x04-garden-of-bones", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/23/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 5, + "title": "The Ghost of Harrenhal", + "airDate": "2012-04-30T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4966/game-of-thrones-2x05-the-ghost-of-harrenhal", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/30/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 6, + "title": "The Old Gods and the New", + "airDate": "2012-05-07T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4967/game-of-thrones-2x06-the-old-gods-and-the-new", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/07/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 7, + "title": "A Man Without Honor", + "airDate": "2012-05-14T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4968/game-of-thrones-2x07-a-man-without-honor", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/14/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 8, + "title": "The Prince of Winterfell", + "airDate": "2012-05-21T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4969/game-of-thrones-2x08-the-prince-of-winterfell", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/21/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 9, + "title": "Blackwater", + "airDate": "2012-05-28T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4970/game-of-thrones-2x09-blackwater", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/28/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 10, + "title": "Valar Morghulis", + "airDate": "2012-06-04T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4971/game-of-thrones-2x10-valar-morghulis", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/04/2012 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + } + ], + "childRequestId": 0, + "childRequest": null, + "seasonAvailable": false, + "id": 0 + }, + { + "seasonNumber": 3, + "episodes": [ + { + "episodeNumber": 1, + "title": "Valar Dohaeris", + "airDate": "2013-04-01T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4972/game-of-thrones-3x01-valar-dohaeris", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/01/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 2, + "title": "Dark Wings, Dark Words", + "airDate": "2013-04-08T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4973/game-of-thrones-3x02-dark-wings-dark-words", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/08/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 3, + "title": "Walk of Punishment", + "airDate": "2013-04-15T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4974/game-of-thrones-3x03-walk-of-punishment", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/15/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 4, + "title": "And Now His Watch is Ended", + "airDate": "2013-04-22T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4975/game-of-thrones-3x04-and-now-his-watch-is-ended", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/22/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 5, + "title": "Kissed by Fire", + "airDate": "2013-04-29T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4976/game-of-thrones-3x05-kissed-by-fire", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/29/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 6, + "title": "The Climb", + "airDate": "2013-05-06T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4977/game-of-thrones-3x06-the-climb", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/06/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 7, + "title": "The Bear and the Maiden Fair", + "airDate": "2013-05-13T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4978/game-of-thrones-3x07-the-bear-and-the-maiden-fair", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/13/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 8, + "title": "Second Sons", + "airDate": "2013-05-20T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4979/game-of-thrones-3x08-second-sons", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/20/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 9, + "title": "The Rains of Castamere", + "airDate": "2013-06-03T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4980/game-of-thrones-3x09-the-rains-of-castamere", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/03/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 10, + "title": "Mhysa", + "airDate": "2013-06-10T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4981/game-of-thrones-3x10-mhysa", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/10/2013 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + } + ], + "childRequestId": 0, + "childRequest": null, + "seasonAvailable": false, + "id": 0 + }, + { + "seasonNumber": 4, + "episodes": [ + { + "episodeNumber": 1, + "title": "Two Swords", + "airDate": "2014-04-07T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4982/game-of-thrones-4x01-two-swords", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/07/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 2, + "title": "The Lion and the Rose", + "airDate": "2014-04-14T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4983/game-of-thrones-4x02-the-lion-and-the-rose", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/14/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 3, + "title": "Breaker of Chains", + "airDate": "2014-04-21T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4984/game-of-thrones-4x03-breaker-of-chains", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/21/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 4, + "title": "Oathkeeper", + "airDate": "2014-04-28T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4985/game-of-thrones-4x04-oathkeeper", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/28/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 5, + "title": "First of His Name", + "airDate": "2014-05-05T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4986/game-of-thrones-4x05-first-of-his-name", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/05/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 6, + "title": "The Laws of Gods and Men", + "airDate": "2014-05-12T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4987/game-of-thrones-4x06-the-laws-of-gods-and-men", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/12/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 7, + "title": "Mockingbird", + "airDate": "2014-05-19T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4988/game-of-thrones-4x07-mockingbird", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/19/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 8, + "title": "The Mountain and the Viper", + "airDate": "2014-06-02T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4989/game-of-thrones-4x08-the-mountain-and-the-viper", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/02/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 9, + "title": "The Watchers on the Wall", + "airDate": "2014-06-09T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4990/game-of-thrones-4x09-the-watchers-on-the-wall", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/09/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 10, + "title": "The Children", + "airDate": "2014-06-16T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/4991/game-of-thrones-4x10-the-children", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/16/2014 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + } + ], + "childRequestId": 0, + "childRequest": null, + "seasonAvailable": false, + "id": 0 + }, + { + "seasonNumber": 5, + "episodes": [ + { + "episodeNumber": 1, + "title": "The Wars to Come", + "airDate": "2015-04-13T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/116522/game-of-thrones-5x01-the-wars-to-come", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/13/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 2, + "title": "The House of Black and White", + "airDate": "2015-04-20T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/144328/game-of-thrones-5x02-the-house-of-black-and-white", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/20/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 3, + "title": "High Sparrow", + "airDate": "2015-04-27T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/144329/game-of-thrones-5x03-high-sparrow", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/27/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 4, + "title": "Sons of the Harpy", + "airDate": "2015-05-04T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/144330/game-of-thrones-5x04-sons-of-the-harpy", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/04/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 5, + "title": "Kill the Boy", + "airDate": "2015-05-11T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/151777/game-of-thrones-5x05-kill-the-boy", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/11/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 6, + "title": "Unbowed, Unbent, Unbroken", + "airDate": "2015-05-18T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/152766/game-of-thrones-5x06-unbowed-unbent-unbroken", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/18/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 7, + "title": "The Gift", + "airDate": "2015-05-25T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/153327/game-of-thrones-5x07-the-gift", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/25/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 8, + "title": "Hardhome", + "airDate": "2015-06-01T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/155299/game-of-thrones-5x08-hardhome", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/01/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 9, + "title": "The Dance of Dragons", + "airDate": "2015-06-08T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/160040/game-of-thrones-5x09-the-dance-of-dragons", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/08/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 10, + "title": "Mother's Mercy", + "airDate": "2015-06-15T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/162186/game-of-thrones-5x10-mothers-mercy", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/15/2015 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + } + ], + "childRequestId": 0, + "childRequest": null, + "seasonAvailable": false, + "id": 0 + }, + { + "seasonNumber": 6, + "episodes": [ + { + "episodeNumber": 1, + "title": "The Red Woman", + "airDate": "2016-04-25T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/560813/game-of-thrones-6x01-the-red-woman", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/25/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 2, + "title": "Home", + "airDate": "2016-05-02T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/664672/game-of-thrones-6x02-home", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/02/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 3, + "title": "Oathbreaker", + "airDate": "2016-05-09T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/664673/game-of-thrones-6x03-oathbreaker", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/09/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 4, + "title": "Book of the Stranger", + "airDate": "2016-05-16T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/664674/game-of-thrones-6x04-book-of-the-stranger", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/16/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 5, + "title": "The Door", + "airDate": "2016-05-23T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/664675/game-of-thrones-6x05-the-door", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/23/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 6, + "title": "Blood of My Blood", + "airDate": "2016-05-30T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/664676/game-of-thrones-6x06-blood-of-my-blood", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/30/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 7, + "title": "The Broken Man", + "airDate": "2016-06-06T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/717449/game-of-thrones-6x07-the-broken-man", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/06/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 8, + "title": "No One", + "airDate": "2016-06-13T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/729573/game-of-thrones-6x08-no-one", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/13/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 9, + "title": "Battle of the Bastards", + "airDate": "2016-06-20T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/729574/game-of-thrones-6x09-battle-of-the-bastards", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/20/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 10, + "title": "The Winds of Winter", + "airDate": "2016-06-27T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/729575/game-of-thrones-6x10-the-winds-of-winter", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "06/27/2016 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + } + ], + "childRequestId": 0, + "childRequest": null, + "seasonAvailable": false, + "id": 0 + }, + { + "seasonNumber": 7, + "episodes": [ + { + "episodeNumber": 1, + "title": "Dragonstone", + "airDate": "2017-07-17T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/937256/game-of-thrones-7x01-dragonstone", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "07/17/2017 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 2, + "title": "Stormborn", + "airDate": "2017-07-24T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1221410/game-of-thrones-7x02-stormborn", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "07/24/2017 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 3, + "title": "The Queen's Justice", + "airDate": "2017-07-31T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1221411/game-of-thrones-7x03-the-queens-justice", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "07/31/2017 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 4, + "title": "The Spoils of War", + "airDate": "2017-08-07T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1221412/game-of-thrones-7x04-the-spoils-of-war", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "08/07/2017 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 5, + "title": "Eastwatch", + "airDate": "2017-08-14T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1221413/game-of-thrones-7x05-eastwatch", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "08/14/2017 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 6, + "title": "Beyond the Wall", + "airDate": "2017-08-21T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1221414/game-of-thrones-7x06-beyond-the-wall", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "08/21/2017 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + }, + { + "episodeNumber": 7, + "title": "The Dragon and the Wolf", + "airDate": "2017-08-28T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1221415/game-of-thrones-7x07-the-dragon-and-the-wolf", + "available": false, + "approved": false, + "requested": true, + "seasonId": 0, + "season": null, + "airDateDisplay": "08/28/2017 02:00:00", + "requestStatus": "Common.PendingApproval", + "id": 0 + } + ], + "childRequestId": 0, + "childRequest": null, + "seasonAvailable": false, + "id": 0 + }, + { + "seasonNumber": 8, + "episodes": [ + { + "episodeNumber": 1, + "title": "Winterfell", + "airDate": "2019-04-15T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1590943/game-of-thrones-8x01-winterfell", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/15/2019 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 2, + "title": "A Knight of the Seven Kingdoms", + "airDate": "2019-04-22T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1623964/game-of-thrones-8x02-a-knight-of-the-seven-kingdoms", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/22/2019 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 3, + "title": "The Long Night", + "airDate": "2019-04-29T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1623965/game-of-thrones-8x03-the-long-night", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "04/29/2019 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 4, + "title": "The Last of the Starks", + "airDate": "2019-05-06T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1623966/game-of-thrones-8x04-the-last-of-the-starks", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/06/2019 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 5, + "title": "The Bells", + "airDate": "2019-05-13T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1623967/game-of-thrones-8x05-the-bells", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/13/2019 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + }, + { + "episodeNumber": 6, + "title": "The Iron Throne", + "airDate": "2019-05-20T02:00:00+01:00", + "url": "https://www.tvmaze.com/episodes/1623968/game-of-thrones-8x06-the-iron-throne", + "available": true, + "approved": true, + "requested": false, + "seasonId": 0, + "season": null, + "airDateDisplay": "05/20/2019 02:00:00", + "requestStatus": "Common.Available", + "id": 0 + } + ], + "childRequestId": 0, + "childRequest": null, + "seasonAvailable": true, + "id": 0 + } + ], + "requestAll": false, + "firstSeason": false, + "latestSeason": false, + "fullyAvailable": false, + "partlyAvailable": false, + "type": 0, + "id": 121361, + "approved": true, + "denied": null, + "deniedReason": null, + "requested": true, + "requestId": 5, + "available": false, + "plexUrl": null, + "embyUrl": null, + "jellyfinUrl": null, + "quality": null, + "imdbId": "tt0944947", + "theTvDbId": "121361", + "theMovieDbId": null, + "subscribed": false, + "showSubscribe": false +} diff --git a/tests/cypress/fixtures/details/tv/streamingResponse.json b/tests/cypress/fixtures/details/tv/streamingResponse.json new file mode 100644 index 000000000..325ac6ecf --- /dev/null +++ b/tests/cypress/fixtures/details/tv/streamingResponse.json @@ -0,0 +1,12 @@ +[ + { + "order": 6, + "streamingProvider": "JamiesNetwork", + "logo": "/hYrcCS72d2alfXdGS1QXNEvwYDY.jpg" + }, + { + "order": 3, + "streamingProvider": "Super1", + "logo": "/zLX0ExkHc8xJ9W4u9JgnldDQLKv.jpg" + } +] diff --git a/tests/cypress/fixtures/example.json b/tests/cypress/fixtures/example.json new file mode 100644 index 000000000..da18d9352 --- /dev/null +++ b/tests/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} \ No newline at end of file diff --git a/tests/cypress/fixtures/login/authenticationSettngs.json b/tests/cypress/fixtures/login/authenticationSettngs.json new file mode 100644 index 000000000..a3bfe250d --- /dev/null +++ b/tests/cypress/fixtures/login/authenticationSettngs.json @@ -0,0 +1,10 @@ +{ + "allowNoPassword": false, + "requireDigit": false, + "requiredLength": 0, + "requireLowercase": false, + "requireNonAlphanumeric": false, + "requireUppercase": false, + "enableOAuth": true, + "id": 14 +} diff --git a/tests/cypress/fixtures/login/landingPageSettings.json b/tests/cypress/fixtures/login/landingPageSettings.json new file mode 100644 index 000000000..e6261df29 --- /dev/null +++ b/tests/cypress/fixtures/login/landingPageSettings.json @@ -0,0 +1,10 @@ +{ + "enabled": false, + "noticeEnabled": false, + "noticeText": "Hey what's up!\n
\n
\nThe username and password is beta\n
\n
\nEnjoy!", + "timeLimit": false, + "startDateTime": "0001-01-01T00:00:00", + "endDateTime": "0001-01-01T00:00:00", + "expired": false, + "id": 0 +} diff --git a/tests/cypress/integration/examples/actions.spec.js b/tests/cypress/integration/examples/actions.spec.js new file mode 100644 index 000000000..092637998 --- /dev/null +++ b/tests/cypress/integration/examples/actions.spec.js @@ -0,0 +1,299 @@ +/// + +context('Actions', () => { + beforeEach(() => { + cy.visit('https://example.cypress.io/commands/actions') + }) + + // https://on.cypress.io/interacting-with-elements + + it('.type() - type into a DOM element', () => { + // https://on.cypress.io/type + cy.get('.action-email') + .type('fake@email.com').should('have.value', 'fake@email.com') + + // .type() with special character sequences + .type('{leftarrow}{rightarrow}{uparrow}{downarrow}') + .type('{del}{selectall}{backspace}') + + // .type() with key modifiers + .type('{alt}{option}') //these are equivalent + .type('{ctrl}{control}') //these are equivalent + .type('{meta}{command}{cmd}') //these are equivalent + .type('{shift}') + + // Delay each keypress by 0.1 sec + .type('slow.typing@email.com', { delay: 100 }) + .should('have.value', 'slow.typing@email.com') + + cy.get('.action-disabled') + // Ignore error checking prior to type + // like whether the input is visible or disabled + .type('disabled error checking', { force: true }) + .should('have.value', 'disabled error checking') + }) + + it('.focus() - focus on a DOM element', () => { + // https://on.cypress.io/focus + cy.get('.action-focus').focus() + .should('have.class', 'focus') + .prev().should('have.attr', 'style', 'color: orange;') + }) + + it('.blur() - blur off a DOM element', () => { + // https://on.cypress.io/blur + cy.get('.action-blur').type('About to blur').blur() + .should('have.class', 'error') + .prev().should('have.attr', 'style', 'color: red;') + }) + + it('.clear() - clears an input or textarea element', () => { + // https://on.cypress.io/clear + cy.get('.action-clear').type('Clear this text') + .should('have.value', 'Clear this text') + .clear() + .should('have.value', '') + }) + + it('.submit() - submit a form', () => { + // https://on.cypress.io/submit + cy.get('.action-form') + .find('[type="text"]').type('HALFOFF') + + cy.get('.action-form').submit() + .next().should('contain', 'Your form has been submitted!') + }) + + it('.click() - click on a DOM element', () => { + // https://on.cypress.io/click + cy.get('.action-btn').click() + + // You can click on 9 specific positions of an element: + // ----------------------------------- + // | topLeft top topRight | + // | | + // | | + // | | + // | left center right | + // | | + // | | + // | | + // | bottomLeft bottom bottomRight | + // ----------------------------------- + + // clicking in the center of the element is the default + cy.get('#action-canvas').click() + + cy.get('#action-canvas').click('topLeft') + cy.get('#action-canvas').click('top') + cy.get('#action-canvas').click('topRight') + cy.get('#action-canvas').click('left') + cy.get('#action-canvas').click('right') + cy.get('#action-canvas').click('bottomLeft') + cy.get('#action-canvas').click('bottom') + cy.get('#action-canvas').click('bottomRight') + + // .click() accepts an x and y coordinate + // that controls where the click occurs :) + + cy.get('#action-canvas') + .click(80, 75) // click 80px on x coord and 75px on y coord + .click(170, 75) + .click(80, 165) + .click(100, 185) + .click(125, 190) + .click(150, 185) + .click(170, 165) + + // click multiple elements by passing multiple: true + cy.get('.action-labels>.label').click({ multiple: true }) + + // Ignore error checking prior to clicking + cy.get('.action-opacity>.btn').click({ force: true }) + }) + + it('.dblclick() - double click on a DOM element', () => { + // https://on.cypress.io/dblclick + + // Our app has a listener on 'dblclick' event in our 'scripts.js' + // that hides the div and shows an input on double click + cy.get('.action-div').dblclick().should('not.be.visible') + cy.get('.action-input-hidden').should('be.visible') + }) + + it('.rightclick() - right click on a DOM element', () => { + // https://on.cypress.io/rightclick + + // Our app has a listener on 'contextmenu' event in our 'scripts.js' + // that hides the div and shows an input on right click + cy.get('.rightclick-action-div').rightclick().should('not.be.visible') + cy.get('.rightclick-action-input-hidden').should('be.visible') + }) + + it('.check() - check a checkbox or radio element', () => { + // https://on.cypress.io/check + + // By default, .check() will check all + // matching checkbox or radio elements in succession, one after another + cy.get('.action-checkboxes [type="checkbox"]').not('[disabled]') + .check().should('be.checked') + + cy.get('.action-radios [type="radio"]').not('[disabled]') + .check().should('be.checked') + + // .check() accepts a value argument + cy.get('.action-radios [type="radio"]') + .check('radio1').should('be.checked') + + // .check() accepts an array of values + cy.get('.action-multiple-checkboxes [type="checkbox"]') + .check(['checkbox1', 'checkbox2']).should('be.checked') + + // Ignore error checking prior to checking + cy.get('.action-checkboxes [disabled]') + .check({ force: true }).should('be.checked') + + cy.get('.action-radios [type="radio"]') + .check('radio3', { force: true }).should('be.checked') + }) + + it('.uncheck() - uncheck a checkbox element', () => { + // https://on.cypress.io/uncheck + + // By default, .uncheck() will uncheck all matching + // checkbox elements in succession, one after another + cy.get('.action-check [type="checkbox"]') + .not('[disabled]') + .uncheck().should('not.be.checked') + + // .uncheck() accepts a value argument + cy.get('.action-check [type="checkbox"]') + .check('checkbox1') + .uncheck('checkbox1').should('not.be.checked') + + // .uncheck() accepts an array of values + cy.get('.action-check [type="checkbox"]') + .check(['checkbox1', 'checkbox3']) + .uncheck(['checkbox1', 'checkbox3']).should('not.be.checked') + + // Ignore error checking prior to unchecking + cy.get('.action-check [disabled]') + .uncheck({ force: true }).should('not.be.checked') + }) + + it('.select() - select an option in a