CinescapeKiosk API tests

Run 16 · 2026-09-30 07:13:24 UTC · Repository · Actions · Playwright HTML report

12Tests
12✓ Passed
0✗ Failed
0– Skipped
100%Pass rate
14API calls (all read-only)
1.26sDuration

Trend: last 16 runs

PassedFailedSkippedHover a column for details · x-axis: run number

Run & environment

Run16
Commit9216f90 Fix API-02: send the programme request as the kiosk app does and read its daySessions answer
Pushed byChaithu200926
Branchmain
Triggerpublished from QA PC
Started2026-09-30 07:13:24 UTC
Finished2026-09-30 07:13:25 UTC
MachineLocal QA PC
OSWindows_NT 10.0.26200
Node.js / Playwrightv24.21.0 / 1.63.0
Target APIhttp://<kiosk-api-host>:8090/api/
Cinema ID0000000001
Safety modeRead-only allowlist enforced (src/safety.ts)

Overview

TestResultHTTPResponse messageLast 10 runs
API-01 Cinemas: kiosk cinema is listed and active✓ Passed HTTP 200(empty)✓✓✓✓✓✓✓✓✓✓
API-02 Sessions: today's programme lists the movies showing✓ Passed HTTP 200(empty)✗✗✗✗✗✗✗✗✗✓
API-03 Ticket types: an expired session is rejected✓ Passed HTTP 200Session has expired✓✓✓✓✓✓✓✓✓✓
API-04 Seat layout: an expired session is rejected✓ Passed HTTP 200Session has expired✓✓✓✓✓✓✓✓✓✓
API-05 Food menu: concession items are listed with prices✓ Passed HTTP 200(empty)✓✓✓✓✓✓✓✓✓✓
API-06 Coming soon: list is returned✓ Passed HTTP 200This is splash text✓✓✓✓✓✓✓✓✓✓
API-07 Email domains: common domains are offered✓ Passed HTTP 200(empty)✓✓✓✓✓✓✓✓✓✓
API-08 Club card: top-up amounts are listed in ascending KWD✓ Passed HTTP 200(empty)·✓✓✓✓✓✓✓✓✓
API-09 Pickup: an unknown booking reference is not found✓ Passed HTTP 200Booking not found··✓✓✓✓✓✓✓✓
API-10 KNET payment status: an unknown booking has no active booking✓ Passed HTTP 200There are no active bookings.···✓✓✓✓✓✓✓
API-11 Customer login: an unknown user is asked to sign up✓ Passed HTTP 200User not found, Please signup····✓✓✓✓✓✓
API-12 Security: requests without valid kiosk credentials are rejected✓ Passed HTTP 403This endpoint is for configured kiosks only·····✓✓✓✓✓

Test details

✓ Passed

API-01 Cinemas: kiosk cinema is listed and active

✓✓✓✓✓✓✓✓✓✓ 0.04s

api-01-cinemas.spec.ts

What it checks: The cinema list contains the cinema this kiosk is configured for, and it is active and priced in KWD.

Why it matters: The kiosk cannot start selling if its cinema is missing or inactive.

CheckExpectedActualResult
HTTP status of content/cinemas200200 ✓ Pass
Response code1000110001 ✓ Pass
Number of cinemas> 01 ✓ Pass
Cinema 0000000001 is in the listpresent["0000000001"] ✓ Pass
Cinema is activetruetrue ✓ Pass
Currency"KWD""KWD" ✓ Pass
Cinema has a namenon-empty"Cinescape 360" ✓ Pass
GET http://<kiosk-api-host>:8090/api/content/cinemas HTTP 200 27 ms · 1209 bytes

✓ Read-only call: List cinemas

Response message(empty) Code10001 Resultsuccess
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
content-length1209
dateWed, 30 Sep 2026 07:13:24 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 10001,
  "result": "success",
  "msg": "",
  "output": {
    "cinemas": [
      {
        "id": "0000000001",
        "name": "Cinescape 360",
        "nameAlt": "سينسكيب 360",
        "phoneNumber": "",
        "emailAddress": "",
        "address1": "360 Mall, Zahra",
        "address2": "",
        "address1Ar": "مول 360، الزهراء",
        "address2Ar": "",
        "workingHours": "08 AM - 10 AM",
        "workingHoursAlt": "08 AM - 10 AM",
        "foodStartTime": "07:00",
        "foodEndTime": "20:30",
        "foodEnable": false,
        "city": "",
        "latitude": "29.2678",
        "longitude": "47.9919",
        "parkingInfo": null,
        "loyaltyCode": null,
        "giftStore": false,
        "description": "",
        "descriptionAlt": "",
        "currencyCode": "KWD",
        "allowPrintAtHomeBookings": false,
        "allowOnlineVoucherValidation": false,
        "displaySofaSeats": false,
        "timeZoneId": null,
        "alerttxt": "",
        "icon": "",
        "active": true,
        "food": true,
        "foodPrepare": true,
        "prepareNow": true,
        "prepareLater": true,
        "webThumbImageUrl": "https://cinescape-test-app.s3.eu-north-1.amazonaws.com/cinema/web_small/0000000001.jpg?v=937",
        "webImageUrl": "",
        "appThumbImageUrl": "https://cinescape-test-app.s3.eu-north-1.amazonaws.com/cinema/mob_small/0000000001.jpg",
        "appImageUrl": "https://cinescape-test-app.s3.eu-north-1.amazonaws.com/cinema/mob_big/0000000001.jpg",
        "priority": 2,
        "experiences": [],
        "exps": [
          "VIP",
          "IMAX",
          "4DX",
          "DOLBY",
          "SCREENX"
        ]
      }
    ]
  }
}
3 execution steps
  1. GET content/cinemas 0.03s
  2. Verify response is successful 0.00s
  3. Verify the kiosk cinema is listed, active and priced in KWD 0.00s
✓ Passed

API-02 Sessions: today's programme lists the movies showing

✗✗✗✗✗✗✗✗✗✓ 0.14s

api-02-sessions.spec.ts

What it checks: Today's programme loads for the kiosk cinema and contains at least one movie with a showtime. Every movie found is listed with its certification, running time, experiences, showtimes and screens.

Why it matters: Without the programme, customers cannot choose a film or showtime, so no tickets can be sold.

CheckExpectedActualResult
HTTP status of content/csessions200200 ✓ Pass
Response code1000110001 ✓ Pass
Movies showing today> 023 ✓ Pass
Movies without any showtime[][] ✓ Pass

Movies now showing (23)

MovieCertificationRunning timeExperiencesShowtimesScreens
Unit 234G1 hr 26 minStandard2026-09-30 11:45, 2026-09-30 16:45, 2026-09-30 21:30, 2026-09-30 00:20Screen 11, Screen 7
SubserviencePG121 hr 46 minStandard, VIP2026-09-30 14:15, 2026-09-30 19:00, 2026-09-30 23:45, 2026-09-30 12:30, 2026-09-30 13:30, 2026-09-30 15:55Screen 11, Screen 4, Screen 9
Despicable Me 4PG151 hr 34 min4DX, Standard2026-09-30 13:45, 2026-09-30 18:35, 2026-09-30 15:30, 2026-09-30 20:00, 2026-09-30 22:10Screen 15, Screen 7
Hounds of WarPG121 hr 34 minStandard2026-09-30 11:35, 2026-09-30 21:50, 2026-09-30 00:00Screen 5
Blink TwiceR181 hr 42 minStandard2026-09-30 17:15Screen 12
Harold and the Purple CrayonPG151 hr 30 minStandard2026-09-30 16:50, 2026-09-30 19:05Screen 3
Speak No EvilR181 hr 46 minVIP, Standard2026-09-30 12:40, 2026-09-30 15:05, 2026-09-30 22:30, 2026-09-30 13:15, 2026-09-30 15:45, 2026-09-30 18:15, 2026-09-30 20:45, 2026-09-30 23:15Screen 10, Screen 13
Alien: RomulusR181 hr 58 minStandard2026-09-30 21:10, 2026-09-30 23:50Screen 6
AFRAIDR151 hr 20 minStandard2026-09-30 14:10, 2026-09-30 22:35Screen 6, Screen 2
It Ends with UsR181 hr 57 minStandard, VIP2026-09-30 13:50, 2026-09-30 16:30, 2026-09-30 19:15, 2026-09-30 19:55Screen 5, Screen 10
Wake UpG1 hr 20 minStandard2026-09-30 12:20, 2026-09-30 20:35, 2026-09-30 00:40Screen 3, Screen 2
The Buckingham Murders - HindiPG151 hr 46 minStandard2026-09-30 11:25, 2026-09-30 16:10, 2026-09-30 18:45Screen 6
Al Khatar Maehom 4 Part Two (Kuwaiti) - ArabicT13+1 hr 56 minStandard2026-09-30 20:05Screen 14
Deadpool & WolverineR182 hr 3 minStandard2026-09-30 17:05Screen 14
Gracie and Pedro: Pets to the RescuePG151 hr 27 minStandard2026-09-30 13:25, 2026-09-30 17:45Screen 7
Beetlejuice BeetlejuiceT13+1 hr 44 min4DX, DOLBY, VIP2026-09-30 11:15, 2026-09-30 16:00, 2026-09-30 20:50, 2026-09-30 23:10, 2026-09-30 19:30, 2026-09-30 22:00, 2026-09-30 00:30, 2026-09-30 12:00, 2026-09-30 14:30, 2026-09-30 17:00, 2026-09-30 17:30Screen 15, Screen 1, Screen 10
The Clean Up CrewPG121 hr 34 minStandard2026-09-30 13:00, 2026-09-30 14:50, 2026-09-30 18:00, 2026-09-30 23:00, 2026-09-30 01:25Screen 8, Screen 14
The Jungle Bunch: World TourPG1 hr 29 minStandard2026-09-30 11:50, 2026-09-30 16:15, 2026-09-30 18:30Screen 2
LeeR181 hr 57 minStandard, VIP2026-09-30 12:05, 2026-09-30 15:15, 2026-09-30 20:15, 2026-09-30 22:45, 2026-09-30 18:20, 2026-09-30 21:05, 2026-09-30 23:40Screen 14, Screen 8, Screen 9
Akh (Kuwaiti) - Arabic R152 hr 17 minStandard2026-09-30 15:00, 2026-09-30 18:05, 2026-09-30 21:00, 2026-09-30 00:00Screen 4
Inside Out 2PG121 hr 36 minStandard2026-09-30 14:00Screen 2
Ex Merati (Egyptian) - ArabicR151 hr 53 minStandard2026-09-30 12:15, 2026-09-30 14:45, 2026-09-30 19:45, 2026-09-30 22:15, 2026-09-30 00:45Screen 12
TrapPG1 hr 45 minStandard2026-09-30 14:25, 2026-09-30 21:15, 2026-09-30 23:35Screen 3
POST http://<kiosk-api-host>:8090/api/content/csessions HTTP 200 136 ms · 230877 bytes

✓ Read-only call: Get programme (lookup; POST carries filters)

Response message(empty) Code10001 Resultsuccess
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
{
  "mid": "0000000001",
  "dated": "",
  "experience": "ALL",
  "language": "ALL",
  "rating": "ALL",
  "genre": "ALL"
}
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:24 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{"code":10001,"result":"success","msg":"","output":{"cinema":{"id":"0000000001","name":"Cinescape 360","nameAlt":"سينسكيب 360","phoneNumber":"","emailAddress":"","address1":"360 Mall, Zahra","address2":"","address1Ar":"مول 360، الزهراء","address2Ar":"","workingHours":"08 AM - 10 AM","workingHoursAlt":"08 AM - 10 AM","foodStartTime":"07:00","foodEndTime":"20:30","foodEnable":false,"city":"","latitude":"29.2678","longitude":"47.9919","parkingInfo":null,"loyaltyCode":null,"giftStore":false,"description":"","descriptionAlt":"","currencyCode":"KWD","allowPrintAtHomeBookings":false,"allowOnlineVoucherValidation":false,"displaySofaSeats":false,"timeZoneId":null,"alerttxt":"","icon":"","active":true,"food":true,"foodPrepare":true,"prepareNow":true,"prepareLater":true,"webThumbImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/cinema/web_small/0000000001.jpg?v=937","webImageUrl":"","appThumbImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/cinema/mob_small/0000000001.jpg","appImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/cinema/mob_big/0000000001.jpg","priority":2,"experiences":[],"exps":["VIP","IMAX","4DX","DOLBY","SCREENX"]},"days":[{"d":"30","wd":"Today","wdf":"Wednesday","dt":"2026-09-30","showdate":"30 Sep 2026","showDateStr":null,"enable":true},{"d":"01","wd":"Thu","wdf":"Thursday","dt":"2026-10-01","showdate":"01 Oct 2026","showDateStr":null,"enable":true},{"d":"02","wd":"Fri","wdf":"Friday","dt":"2026-10-02","showdate":"02 Oct 2026","showDateStr":null,"enable":true},{"d":"03","wd":"Sat","wdf":"Saturday","dt":"2026-10-03","showdate":"03 Oct 2026","showDateStr":null,"enable":true},{"d":"04","wd":"Sun","wdf":"Sunday","dt":"2026-10-04","showdate":"04 Oct 2026","showDateStr":null,"enable":true},{"d":"05","wd":"Mon","wdf":"Monday","dt":"2026-10-05","showdate":"05 Oct 2026","showDateStr":null,"enable":true},{"d":"06","wd":"Tue","wdf":"Tuesday","dt":"2026-10-06","showdate":"06 Oct 2026","showDateStr":null,"enable":true},{"d":"07","wd":"Wed","wdf":"Wednesday","dt":"2026-10-07","showdate":"07 Oct 2026","showDateStr":null,"enable":true},{"d":"08","wd":"Thu","wdf":"Thursday","dt":"2026-10-08","showdate":"08 Oct 2026","showDateStr":null,"enable":true},{"d":"09","wd":"Fri","wdf":"Friday","dt":"2026-10-09","showdate":"09 Oct 2026","showDateStr":null,"enable":true},{"d":"10","wd":"Sat","wdf":"Saturday","dt":"2026-10-10","showdate":"10 Oct 2026","showDateStr":null,"enable":true},{"d":"11","wd":"Sun","wdf":"Sunday","dt":"2026-10-11","showdate":"11 Oct 2026","showDateStr":null,"enable":true},{"d":"12","wd":"Mon","wdf":"Monday","dt":"2026-10-12","showdate":"12 Oct 2026","showDateStr":null,"enable":true},{"d":"13","wd":"Tue","wdf":"Tuesday","dt":"2026-10-13","showdate":"13 Oct 2026","showDateStr":null,"enable":true},{"d":"14","wd":"Wed","wdf":"Wednesday","dt":"2026-10-14","showdate":"14 Oct 2026","showDateStr":null,"enable":true},{"d":"15","wd":"Thu","wdf":"Thursday","dt":"2026-10-15","showdate":"15 Oct 2026","showDateStr":null,"enable":true},{"d":"16","wd":"Fri","wdf":"Friday","dt":"2026-10-16","showdate":"16 Oct 2026","showDateStr":null,"enable":true},{"d":"17","wd":"Sat","wdf":"Saturday","dt":"2026-10-17","showdate":"17 Oct 2026","showDateStr":null,"enable":true},{"d":"18","wd":"Sun","wdf":"Sunday","dt":"2026-10-18","showdate":"18 Oct 2026","showDateStr":null,"enable":true},{"d":"19","wd":"Mon","wdf":"Monday","dt":"2026-10-19","showdate":"19 Oct 2026","showDateStr":null,"enable":true},{"d":"20","wd":"Tue","wdf":"Tuesday","dt":"2026-10-20","showdate":"20 Oct 2026","showDateStr":null,"enable":true},{"d":"21","wd":"Wed","wdf":"Wednesday","dt":"2026-10-21","showdate":"21 Oct 2026","showDateStr":null,"enable":true},{"d":"22","wd":"Thu","wdf":"Thursday","dt":"2026-10-22","showdate":"22 Oct 2026","showDateStr":null,"enable":true},{"d":"23","wd":"Fri","wdf":"Friday","dt":"2026-10-23","showdate":"23 Oct 2026","showDateStr":null,"enable":true},{"d":"24","wd":"Sat","wdf":"Saturday","dt":"2026-10-24","showdate":"24 Oct 2026","showDateStr":null,"enable":true},{"d":"25","wd":"Sun","wdf":"Sunday","dt":"2026-10-25","showdate":"25 Oct 2026","showDateStr":null,"enable":true},{"d":"26","wd":"Mon","wdf":"Monday","dt":"2026-10-26","showdate":"26 Oct 2026","showDateStr":null,"enable":true},{"d":"27","wd":"Tue","wdf":"Tuesday","dt":"2026-10-27","showdate":"27 Oct 2026","showDateStr":null,"enable":true},{"d":"28","wd":"Wed","wdf":"Wednesday","dt":"2026-10-28","showdate":"28 Oct 2026","showDateStr":null,"enable":true},{"d":"29","wd":"Thu","wdf":"Thursday","dt":"2026-10-29","showdate":"29 Oct 2026","showDateStr":null,"enable":true},{"d":"30","wd":"Today","wdf":"Friday","dt":"2026-10-30","showdate":"30 Oct 2026","showDateStr":null,"enable":true},{"d":"31","wd":"Sat","wdf":"Saturday","dt":"2026-10-31","showdate":"31 Oct 2026","showDateStr":null,"enable":true},{"d":"01","wd":"Sun","wdf":"Sunday","dt":"2026-11-01","showdate":"01 Nov 2026","showDateStr":null,"enable":true},{"d":"02","wd":"Mon","wdf":"Monday","dt":"2026-11-02","showdate":"02 Nov 2026","showDateStr":null,"enable":true},{"d":"03","wd":"Tue","wdf":"Tuesday","dt":"2026-11-03","showdate":"03 Nov 2026","showDateStr":null,"enable":true},{"d":"04","wd":"Wed","wdf":"Wednesday","dt":"2026-11-04","showdate":"04 Nov 2026","showDateStr":null,"enable":true},{"d":"05","wd":"Thu","wdf":"Thursday","dt":"2026-11-05","showdate":"05 Nov 2026","showDateStr":null,"enable":true},{"d":"06","wd":"Fri","wdf":"Friday","dt":"2026-11-06","showdate":"06 Nov 2026","showDateStr":null,"enable":true},{"d":"07","wd":"Sat","wdf":"Saturday","dt":"2026-11-07","showdate":"07 Nov 2026","showDateStr":null,"enable":true},{"d":"08","wd":"Sun","wdf":"Sunday","dt":"2026-11-08","showdate":"08 Nov 2026","showDateStr":null,"enable":true},{"d":"09","wd":"Mon","wdf":"Monday","dt":"2026-11-09","showdate":"09 Nov 2026","showDateStr":null,"enable":true},{"d":"10","wd":"Tue","wdf":"Tuesday","dt":"2026-11-10","showdate":"10 Nov 2026","showDateStr":null,"enable":true},{"d":"11","wd":"Wed","wdf":"Wednesday","dt":"2026-11-11","showdate":"11 Nov 2026","showDateStr":null,"enable":true}],"daySessions":[{"movie":{"id":"HO00002438","title":"Unit 234","titleAlt":"٢٣٤ يونت","subTitle":":Arabic","subTitleAlt":":Arabic","rating":"G","ratingColor":"#00af6d","ratingImageBig":"https://cdn.cinescape.com.kw/ratingImages/l-g.png","ratingDescription":"","ratingDescriptionAlt":"","synopsis":"A lone employee at a remote storage facility must fight for survival against a ruthless gang after a shocking discovery.","synopsisAlt":"يجب على الوظف الوحيد في منشأة تخزين عن بعد الكفاح من أجل البقاء على قيد الحياة ضد\r\n.عصابة ل ترحم بعد اكتشاف صادم","hOFilmCode":"A000002662","runTime":86,"runTimeStr":"1 hr 26 min","openingDate":"12 Sep 2024","trailerUrl":"https://youtu.be/lRm8x6_4te4","comingSoon":false,"scheduledAtCinema":true,"genre":"Thriller","genreAlt":null,"distributorName":"Falcon Film","language":"English","languageAlt":"إنجليزي","director":{"id":"0000004787","firstName":"Andy ","lastName":"Tennant","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_small/HO00002438_906.jpg","webimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_big/HO00002438_208.jpg","webadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance/HO00002438_824.jpg","webadvance2":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance2/HO00002438_417.jpg","webadvance3":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance3/HO00002438_877.jpg","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002438_769.jpg","mobimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_big/HO00002438_422.jpg","mobadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_advance/HO00002438_833.jpg","sliderimgurl":"#4c6b6d","shareUrl":"http://127.0.0.1:9/movie-details/Unit-234/HO00002438","tag":"NEW","tagAr":"جديد","tagColor":"#E12329","cast":[{"id":"0000004202","firstName":"Don","lastName":"Johnson","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000004788","firstName":"Issabelle","lastName":"Fuhrman","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":["0000000001"],"movieExperience":["Standard"],"movieTimings":[1,2,4,5]},"showCount":4,"experienceSessions":[{"experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","showCount":4,"shows":[{"id":"0000000001-243982","cinemaId":"0000000001","scheduledFilmId":"HO00002438","sessionId":"243982","showtime":"2026-09-30T08:45:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":247,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 11","screenNameAlt":"","screenNumber":11,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"11:45","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false},{"id":"0000000001-243910","cinemaId":"0000000001","scheduledFilmId":"HO00002438","sessionId":"243910","showtime":"2026-09-30T13:45:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":241,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 11","screenNameAlt":"","screenNumber":11,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"16:45","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false},{"id":"0000000001-243998","cinemaId":"0000000001","scheduledFilmId":"HO00002438","sessionId":"243998","showtime":"2026-09-30T18:30:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":247,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 11","screenNameAlt":"","screenNumber":11,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"21:30","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false},{"id":"0000000001-243933","cinemaId":"0000000001","scheduledFilmId":"HO00002438","sessionId":"243933","showtime":"2026-09-30T21:20:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":154,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 7","screenNameAlt":"","screenNumber":7,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"00:20","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false}]}],"shows":[{"id":"0000000001-243982","cinemaId":"0000000001","scheduledFilmId":"HO00002438","sessionId":"243982","showtime":"2026-09-30T08:45:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":247,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 11","screenNameAlt":"","screenNumber":11,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"11:45","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false},{"id":"0000000001-243910","cinemaId":"0000000001","scheduledFilmId":"HO00002438","sessionId":"243910","showtime":"2026-09-30T13:45:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":241,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 11","screenNameAlt":"","screenNumber":11,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"16:45","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false},{"id":"0000000001-243998","cinemaId":"0000000001","scheduledFilmId":"HO00002438","sessionId":"243998","showtime":"2026-09-30T18:30:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":247,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 11","screenNameAlt":"","screenNumber":11,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"21:30","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false},{"id":"0000000001-243933","cinemaId":"0000000001","scheduledFilmId":"HO00002438","sessionId":"243933","showtime":"2026-09-30T21:20:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":154,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 7","screenNameAlt":"","screenNumber":7,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"00:20","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false}]},{"movie":{"id":"HO00002439","title":"Subservience","titleAlt":"سبسيرفينس","subTitle":"Arabic","subTitleAlt":"عربي","rating":"PG12","ratingColor":"#f78c1e","ratingImageBig":"https://cdn.cinescape.com.kw/ratingImages/l-pg12.png","ratingDescription":"","ratingDescriptionAlt":"","synopsis":"A lifelike artificially intelligent android, who has the ability to take care of any family and home. Looking for help with the housework, a struggling father purchases Alice after his wife becomes sick. Alice suddenly becomes self-aware and wants everything her new family has to offer, starting with the affection of her owner -- and she'll kill to get it.","synopsisAlt":"روبوت نابض بالحياة يتمتع بالذكاء الاصطناعي، ولديه القدرة على رعاية أي عائلة ومنزل. بحثًا عن مساعدة في الأعمال المنزلية، يشتري الأب المكافح أليس بعد أن مرضت زوجته. تصبح \"أليس\" فجأة واعية بذاتها وتريد كل ما تقدمه عائلتها الجديدة، بدءًا من عاطفة مالكها - وست","hOFilmCode":"A000002663","runTime":106,"runTimeStr":"1 hr 46 min","openingDate":"12 Sep 2024","trailerUrl":"https://youtu.be/6DWTElLWkLQ","comingSoon":false,"scheduledAtCinema":true,"genre":"Thriller","genreAlt":null,"distributorName":"Eagle Film","language":"English","languageAlt":"إنجليزي","director":{"id":"0000004789","firstName":"S K ","lastName":"Dale","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_small/HO00002439_810.jpg","webimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_big/HO00002439_103.jpg","webadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance/HO00002439_250.jpg","webadvance2":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance2/HO00002439_218.jpg","webadvance3":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance3/HO00002439_396.jpg","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002439_837.jpg","mobimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_big/HO00002439_949.jpg","mobadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_advance/HO00002439_198.jpg","sliderimgurl":"#9d2207","shareUrl":"http://127.0.0.1:9/movie-details/Subservience/HO00002439","tag":"NEW","tagAr":"جديد","tagColor":"#E12329","cast":[{"id":"0000003474","firstName":"Megan ","lastName":"Fox","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000004790","firstName":"Michelle","lastName":"Morone","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":["0000000001"],"movieExperience":["VIP","Standard"],"movieTimings":[5,2,3]},"showCount":6,"experienceSessions":[{"experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","showCount":3,"shows":[{"id":"0000000001-243791","cinemaId":"0000000001","scheduledFilmId":"HO00002439","sessionId":"243791","showtime":"2026-09-30T11:15:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":247,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 11","screenNameAlt":"","screenNumber":11,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusinessDate":"2026-09-29T21:00:00.000+00:00","sessionBusinessDateStr":"2026-09-30","sessionDisplayPriority":0,"soldoutStatus":0,"typeCode":"N","showTime":"14:15","format":"","experience":"Standard","experienceAlt":"اساسي","experienceIcon":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/experience/standard.png","certification":"","certificationAlt":"","certificationIcon":"","premium":false},{"id":"0000000001-243642","cinemaId":"0000000001","scheduledFilmId":"HO00002439","sessionId":"243642","showtime":"2026-09-30T16:00:00.000+00:00","allocatedSeating":true,"allowChildAdmits":true,"seatsAvailable":247,"allowComplimentaryTickets":true,"priceGroupCode":"0002","screenName":"Screen 11","screenNameAlt":"","screenNumber":11,"cinemaOperatorCode":"0001","formatCode":"0000000001","formatHOPK":"0000000001","allowTicketSales":"true","sessionBusi …(truncated)
4 execution steps
  1. POST content/csessions 0.14s
  2. List the movies showing today 0.00s
  3. Verify response is successful 0.00s
  4. Verify movies with showtimes are returned 0.00s
✓ Passed

API-03 Ticket types: an expired session is rejected

✓✓✓✓✓✓✓✓✓✓ 0.03s

api-03-ticket-types.spec.ts

What it checks: Asking for ticket types of a session that no longer exists returns a clear "Session has expired" answer.

Why it matters: A customer who waits too long on the kiosk must get a clear message instead of a crash or wrong prices.

CheckExpectedActualResult
HTTP status of content/trans/tickettype?cinemaId=0000000001&sessionId=0200200 ✓ Pass
Response code1100111001 ✓ Pass
Response message"Session has expired""Session has expired" ✓ Pass
GET http://<kiosk-api-host>:8090/api/content/trans/tickettype?cinemaId=0000000001&sessionId=0 HTTP 200 21 ms · 74 bytes

✓ Read-only call: Get ticket types for a session

Response messageSession has expired Code11001 Resultdialog
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:24 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 11001,
  "result": "dialog",
  "msg": "Session has expired",
  "output": null
}
2 execution steps
  1. GET content/trans/tickettype?cinemaId=0000000001&sessionId=0 0.02s
  2. Verify "Session has expired" is returned 0.00s
✓ Passed

API-04 Seat layout: an expired session is rejected

✓✓✓✓✓✓✓✓✓✓ 0.03s

api-04-seat-layout.spec.ts

What it checks: Asking for the seat map of a session that no longer exists returns "Session has expired".

Why it matters: The seat screen must not show an out-of-date seat map, which could lead to double-booked seats.

CheckExpectedActualResult
HTTP status of content/trans/seatlayoutkiosk?cinemaId=0000000001&sessionId=0&areacode=0200200 ✓ Pass
Response code1100111001 ✓ Pass
Response message"Session has expired""Session has expired" ✓ Pass
GET http://<kiosk-api-host>:8090/api/content/trans/seatlayoutkiosk?cinemaId=0000000001&sessionId=0&areacode=0 HTTP 200 21 ms · 74 bytes

✓ Read-only call: Get seat layout for a session

Response messageSession has expired Code11001 Resultdialog
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:24 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 11001,
  "result": "dialog",
  "msg": "Session has expired",
  "output": null
}
2 execution steps
  1. GET content/trans/seatlayoutkiosk?cinemaId=0000000001&sessionId=0&areacode=0 0.02s
  2. Verify "Session has expired" is returned 0.00s
✓ Passed

API-05 Food menu: concession items are listed with prices

✓✓✓✓✓✓✓✓✓✓ 0.13s

api-05-food-menu.spec.ts

What it checks: The food & beverage menu loads, and every item has a positive price shown in KWD.

Why it matters: A missing or zero price would let customers order food for free or block the food screen.

CheckExpectedActualResult
HTTP status of content/food/getfood200200 ✓ Pass
Response code1000110001 ✓ Pass
Number of food items> 058 ✓ Pass
Items without a positive price[][] ✓ Pass
Items with a badly formatted price label[][] ✓ Pass
POST http://<kiosk-api-host>:8090/api/content/food/getfood HTTP 200 122 ms · 131820 bytes

✓ Read-only call: Get food menu (lookup)

Response message(empty) Code10001 Resultsuccess
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
{
  "cinemaId": "0000000001"
}
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:24 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{"code":10001,"result":"success","msg":"","output":{"concessionTabs":[{"concessionItems":[{"id":"106","headOfficeItemCode":"A000000120","description":"Medium Popcorn & Soda COMBO2","descriptionAlt":"كومبو بوبكورن وسط","title":"Combo 2","titleAlt":"نفيش ومشروب غازي وسط","priceInCents":200,"itemPrice":"KWD 2.000","parentId":"","addVisibility":true,"priceTextVisibility":false,"foodtype":"combo","tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000120.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000120.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000120.png","packageChildItems":[{"id":"104","quantity":1,"description":"Medium Popcorn-OL","descriptionAlt":"","alternateItems":[{"id":"44","headOfficeItemCode":"A000000049","description":"Salt","descriptionAlt":"ملح","title":"","titleAlt":"","priceInCents":0,"itemPrice":"KWD 0.000","parentId":"104","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000049.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000049.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000049.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"47","headOfficeItemCode":"A000000052","description":"Caramel","descriptionAlt":"كاراميل","title":"","titleAlt":"","priceInCents":0,"itemPrice":"KWD 0.000","parentId":"104","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000052.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000052.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000052.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"50","headOfficeItemCode":"A000000055","description":"Mix (Salt & Caramel)","descriptionAlt":"ميكس","title":"","titleAlt":"","priceInCents":0,"itemPrice":"KWD 0.000","parentId":"104","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000055.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000055.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000055.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"219","headOfficeItemCode":"A000000260","description":"Mix (Cheese & Salt)","descriptionAlt":"ميكس","title":"","titleAlt":"","priceInCents":0,"itemPrice":"KWD 0.000","parentId":"104","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000260.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000260.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000260.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"220","headOfficeItemCode":"A000000261","description":"Mix (Cheese & Caramel)","descriptionAlt":"ميكس","title":"","titleAlt":"","priceInCents":0,"itemPrice":"KWD 0.000","parentId":"104","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000261.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000261.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000261.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"221","headOfficeItemCode":"A000000262","description":"Cheese","descriptionAlt":"ملح","title":"","titleAlt":"","priceInCents":0,"itemPrice":"KWD 0.000","parentId":"104","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000262.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000262.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000262.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false}],"sequence":99},{"id":"88","quantity":1,"description":"Medium SoftDrink","descriptionAlt":"","alternateItems":[{"id":"61","headOfficeItemCode":"A000000070","description":"Pepsi","descriptionAlt":"بيبسي","title":"","titleAlt":"","priceInCents":75,"itemPrice":"KWD 0.750","parentId":"88","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000070.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000070.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000070.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"62","headOfficeItemCode":"A000000071","description":"Diet Pepsi","descriptionAlt":"دايت بيبسي","title":"","titleAlt":"","priceInCents":75,"itemPrice":"KWD 0.750","parentId":"88","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000071.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000071.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000071.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"65","headOfficeItemCode":"A000000074","description":"7 UP","descriptionAlt":"سفن أب","title":"","titleAlt":"","priceInCents":75,"itemPrice":"KWD 0.750","parentId":"88","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000074.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000074.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000074.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"63","headOfficeItemCode":"A000000072","description":"Mirinda","descriptionAlt":"ميراندا","title":"Mirinda","titleAlt":"ميراندا","priceInCents":75,"itemPrice":"KWD 0.750","parentId":"88","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000072.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000072.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000072.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"64","headOfficeItemCode":"A000000073","description":"Mountain Dew","descriptionAlt":"ماونتن ديو","title":"","titleAlt":"","priceInCents":75,"itemPrice":"KWD 0.750","parentId":"88","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000073.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000073.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000073.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false}],"sequence":99}],"modifierGroups":[],"alternateItems":[],"sequence":2,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"107","headOfficeItemCode":"A000000121","description":"Large Popcorn & Soda COMBO3","descriptionAlt":"كومبو بوبكورن كبير","title":"Combo 3","titleAlt":"نفيش ومشروب غازي كبير","priceInCents":235,"itemPrice":"KWD 2.350","parentId":"","addVisibility":true,"priceTextVisibility":false,"foodtype":"combo","tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000121.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000121.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000121.png","packageChildItems":[{"id":"105","quantity":1,"description":"Large Popcorn","descriptionAlt":"","alternateItems":[{"id":"45","headOfficeItemCode":"A000000050","description":"Salt","descriptionAlt":"ملح","title":"","titleAlt":"","priceInCents":150,"itemPrice":"KWD 1.500","parentId":"105","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000050.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000050.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000050.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"48","headOfficeItemCode":"A000000053","description":"Caramel","descriptionAlt":"كاراميل","title":"","titleAlt":"","priceInCents":150,"itemPrice":"KWD 1.500","parentId":"105","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000053.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000053.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000053.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"51","headOfficeItemCode":"A000000056","description":"Mix","descriptionAlt":"ميكس","title":"","titleAlt":"","priceInCents":150,"itemPrice":"KWD 1.500","parentId":"105","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000056.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000056.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000056.png","packageChildItems":[],"modifierGroups":[],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false}],"sequence":99},{"id":"89","quantity":1,"description":"Large SoftDrink","descriptionAlt":"","alternateItems":[{"id":"66","headOfficeItemCode":"A000000075","description":"Pepsi","descriptionAlt":"بيبسي","title":"","titleAlt":"","priceInCents":85,"itemPrice":"KWD 0.850","parentId":"89","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000075.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000075.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000075.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"67","headOfficeItemCode":"A000000076","description":"Diet Pepsi","descriptionAlt":"دايت بيبسي","title":"","titleAlt":"","priceInCents":85,"itemPrice":"KWD 0.850","parentId":"89","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000076.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000076.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000076.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"68","headOfficeItemCode":"A000000077","description":"7 UP","descriptionAlt":"7 UP","title":"","titleAlt":"","priceInCents":85,"itemPrice":"KWD 0.850","parentId":"89","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000077.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000077.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000077.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"69","headOfficeItemCode":"A000000078","description":"Mirinda","descriptionAlt":"ميراندا","title":"Mirinda","titleAlt":"ميراندا","priceInCents":85,"itemPrice":"KWD 0.850","parentId":"89","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000078.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000078.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000078.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"70","headOfficeItemCode":"A000000079","description":"Mountain Dew","descriptionAlt":"ماونتن ديو","title":"","titleAlt":"","priceInCents":85,"itemPrice":"KWD 0.850","parentId":"89","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000079.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000079.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000079.png","packageChildItems":[],"modifierGroups":[{"id":"308","description":"Remove","descriptionAlt":"بدون","type":"CHECKBOX","freeQuantity":0,"maximumQuantity":1,"minimumQuantity":0,"modifiers":[{"id":"307","description":"No Ice","descriptionAlt":"بدون ثلج","priceInCents":0,"itemPrice":"KWD 0.000"}]}],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false}],"sequence":99}],"modifierGroups":[],"alternateItems":[],"sequence":3,"variablePriceItem":false,"availableForPickupAtCounter":false,"availableForInSeatDelivery":false},{"id":"109","headOfficeItemCode":"A000000123","description":"Nachos & Soda COMBO4","descriptionAlt":"","title":"Combo4","titleAlt":"ناتشوز مع مشروب غازي","priceInCents":215,"itemPrice":"KWD 2.150","parentId":"","addVisibility":true,"priceTextVisibility":false,"foodtype":"combo","tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/180x150/A000000123.png","itemPopupImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/1000x340/A000000123.png","itemDetailImageUrl":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/food/60x60/A000000123.png","packageChildItems":[{"id":"209","quantity":1,"description":"Nachos Pkg UAT","descriptionAlt":"ناتشوز","alternateItems":[{"id":"336","headOfficeItemCode":"A000000381","description":"Nachos","descriptionAlt":"ناتشوز","title":"Nachos","titleAlt":"ناتشوز","priceInCents":150,"itemPrice":"KWD 1.500","parentId":"209","addVisibility":false,"priceTextVisibility":false,"foodtype":null,"tabImageUrl":null,"itemImageUrl":"https://cinescape-test-app.s3.eu-nor …(truncated)
3 execution steps
  1. POST content/food/getfood 0.12s
  2. Verify response is successful 0.00s
  3. Verify every item has a positive KWD price 0.00s
✓ Passed

API-06 Coming soon: list is returned

✓✓✓✓✓✓✓✓✓✓ 0.03s

api-06-coming-soon.spec.ts

What it checks: The coming-soon films list loads, even when it is empty.

Why it matters: The Coming Soon screen on the kiosk depends on this call.

CheckExpectedActualResult
HTTP status200200 ✓ Pass
Response code1000110001 ✓ Pass
Output is a listtruetrue ✓ Pass
POST http://<kiosk-api-host>:8090/api/content/comingsoon HTTP 200 23 ms · 23851 bytes

✓ Read-only call: Get coming-soon films (lookup)

Response messageThis is splash text Code10001 Result(empty)
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
{
  "cinemaId": "0000000001"
}
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:24 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{"code":10001,"result":"","msg":"This is splash text","output":[{"id":"HO00002418","title":"Smile 3","titleAlt":"سمايل ٢","subTitle":"arabic","subTitleAlt":"arabic","rating":"TBC","ratingColor":"#000000","ratingImageBig":"","ratingDescription":"","ratingDescriptionAlt":"","synopsis":"Pop superstar Skye Riley's world tour takes a terrifying turn as she's haunted by inexplicable horrors. To survive, she must confront her past demons.","synopsisAlt":"تأخذ جولة نجمة البوب سكاي رايلي العالمية منعطفا مرعبا لأنها تطاردها أهوال لا يمكن\r\nتفسيرها. للبقاء على قيد الحياة، يجب عليها مواجهة شياطينها السابقة.","hOFilmCode":"A000002640","runTime":105,"runTimeStr":"1 hr 45 min","openingDate":"07 Oct 2026","trailerUrl":"","comingSoon":true,"scheduledAtCinema":false,"genre":"Horror, Mystery","genreAlt":null,"distributorName":"Four Star Films","language":"English","languageAlt":"إنجليزي","director":{"id":"0000004757","firstName":"Nacho ","lastName":"Francavilla","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},"producer":null,"webimgsmall":"","webimgbig":"","webadvance":"","webadvance2":"","webadvance3":"","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002418_165.jpg","mobimgbig":"","mobadvance":"","sliderimgurl":"#0F0F0F","shareUrl":"http://127.0.0.1:9/movie-details/Smile-3/HO00002418","tag":"","tagAr":null,"tagColor":null,"cast":[{"id":"0000002861","firstName":"Naomi ","lastName":"Scott","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000003622","firstName":"Rosemarie ","lastName":"DeWitt","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":[],"movieExperience":[],"movieTimings":[]},{"id":"HO00002423","title":"Deep Sea","titleAlt":"دييب سيي","subTitle":"Arabic","subTitleAlt":"عربي","rating":"T13+","ratingColor":"#FFA700","ratingImageBig":"https://cdn.cinescape.com.kw/ratingImages/l-t13+.png","ratingDescription":"Only viewers of age 13 and above are allowed entry.","ratingDescriptionAlt":"يسمح بدخول من هم في سن 13 فما فوق فقط.","synopsis":"Swept into the sea during a family cruise, a young girl stumbles upon a mysterious restaurant under the waves. There, she meets the head chef and his ragtag crew of adorable otters.They join forces to save the restaurant and reunite the girl with her mother.","synopsisAlt":"اجتاحت فتاة صغيرة البحر خلال رحلة بحرية عائلية، وتتعثر على مطعم غامض تحت الأمواج.\r\nهناك، تلتقي برئيس الطهاة وطاقمه من ثراء الماء الرائعة. يتحدون لإنقاذ المطعم ولم شمل الفتاة مع\r\n.والدتها","hOFilmCode":"A000002646","runTime":93,"runTimeStr":"1 hr 33 min","openingDate":"15 Oct 2026","trailerUrl":"https://youtu.be/4kWGfWy-0CI","comingSoon":true,"scheduledAtCinema":false,"genre":"Animation, Adventure","genreAlt":null,"distributorName":"Phars Film","language":"English","languageAlt":"إنجليزي","director":{"id":"0000004763","firstName":"Fabolia","lastName":"Stevenson","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_small/HO00002423_487.jpg","webimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_big/HO00002423_180.jpg","webadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance/HO00002423_741.jpg","webadvance2":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance2/HO00002423_259.jpg","webadvance3":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance3/HO00002423_389.jpg","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002423_854.jpg","mobimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_big/HO00002423_276.jpg","mobadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_advance/HO00002423_895.jpg","sliderimgurl":"#138dd6","shareUrl":"http://127.0.0.1:9/movie-details/Deep-Sea/HO00002423","tag":"","tagAr":null,"tagColor":null,"cast":[{"id":"0000004764","firstName":"Brian ","lastName":"Flaccus","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000004765","firstName":"Angela ","lastName":"Malhorta","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":[],"movieExperience":[],"movieTimings":[]},{"id":"HO00002416","title":"Vedaa - Hindi","titleAlt":"فيدا - هندي","subTitle":"Arabic","subTitleAlt":"عربي","rating":"PG15","ratingColor":"#c16f29","ratingImageBig":"https://cdn.cinescape.com.kw/ratingImages/l-pg15.png","ratingDescription":"","ratingDescriptionAlt":"","synopsis":"Vedaa is a tale of a young woman's courageous fight against a ruthless system. With a guiding force by her side, she rises up to challenge injustice.","synopsisAlt":"فيدا هي قصة معركة شابة شجاعة ضد نظام لا يرحم. مع قوة توجيهية إلى جانبها، تنهض لتحدي\r\n.الظلم","hOFilmCode":"A000002638","runTime":147,"runTimeStr":"2 hr 27 min","openingDate":"22 Oct 2026","trailerUrl":"https://youtu.be/obj_DSAWAYw","comingSoon":true,"scheduledAtCinema":false,"genre":"Action, Drama","genreAlt":null,"distributorName":"Phars Film","language":"Hindi","languageAlt":"هندي","director":{"id":"0000004755","firstName":"Carlos","lastName":" Goitia","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_small/HO00002416_983.jpg","webimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_big/HO00002416_683.jpg","webadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance/HO00002416_380.jpg","webadvance2":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance2/HO00002416_613.jpg","webadvance3":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance3/HO00002416_974.jpg","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002416_754.jpg","mobimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_big/HO00002416_307.jpg","mobadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_advance/HO00002416_938.jpg","sliderimgurl":"#5b4632","shareUrl":"http://127.0.0.1:9/movie-details/Vedaa---Hindi/HO00002416","tag":"","tagAr":null,"tagColor":null,"cast":[{"id":"0000000092","firstName":"Mammootty","lastName":".","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000000459","firstName":"Mohanlal","lastName":".","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":[],"movieExperience":[],"movieTimings":[]},{"id":"HO00002402","title":"Twisters","titleAlt":"أعاصير","subTitle":"Arabic","subTitleAlt":"عربي","rating":"T13+","ratingColor":"#FFA700","ratingImageBig":"https://cdn.cinescape.com.kw/ratingImages/l-t13+.png","ratingDescription":"Only viewers of age 13 and above are allowed entry.","ratingDescriptionAlt":"يسمح بدخول من هم في سن 13 فما فوق فقط.","synopsis":"Kate Cooper, a storm chaser haunted by a past trauma, now analyzes storms from the safety of NYC. Lured back by a friend to test a revolutionary tracking system in Oklahoma, she clashes with thrill-seeking social media star Tyler Owens. As monstrous storms converge, Kate must confront her fear to use her skills and survive the ultimate clash of nature and ambition.","synopsisAlt":"كيت كوبر، مطاردة عواصف سابقة تطارها ذكرى مأساوية مع إعصار خلال دراستها الجامعية، تعمل الآن على تحليل العواصف من مأمن مدينة نيويورك. تلتقي بطريق تايلر أوينز، نجم وسائل التواصل الاجتماعي الذي يشتهر بنشر مغامراته في مطاردة العواصف مع طاقمه الصاخب، وكلما كان ","hOFilmCode":"A000002618","runTime":122,"runTimeStr":"2 hr 2 min","openingDate":"29 Oct 2026","trailerUrl":"https://youtu.be/UmVWEsd_z4E","comingSoon":true,"scheduledAtCinema":false,"genre":"Action, Adventure","genreAlt":"أكشن، مغامرات","distributorName":"MAF","language":"English","languageAlt":"إنجليزي","director":{"id":"0000004738","firstName":"Karen ","lastName":"Hayden","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_small/HO00002402_565.jpg","webimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_big/HO00002402_705.jpg","webadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance/HO00002402_008.jpg","webadvance2":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance2/HO00002402_422.jpg","webadvance3":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance3/HO00002402_818.jpg","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002402_803.jpg","mobimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_big/HO00002402_295.jpg","mobadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_advance/HO00002402_385.jpg","sliderimgurl":"#ae8568","shareUrl":"http://127.0.0.1:9/movie-details/Twisters/HO00002402","tag":"","tagAr":null,"tagColor":null,"cast":[{"id":"0000004073","firstName":"Glen","lastName":" Powell","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000004736","firstName":"Dana ","lastName":"Davis","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000004737","firstName":"Chris ","lastName":"Gann","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":[],"movieExperience":[],"movieTimings":[]},{"id":"HO00002419","title":"Gladiator III","titleAlt":"قلادياتور ٢","subTitle":"Arabic","subTitleAlt":"عربي","rating":"TBC","ratingColor":"#000000","ratingImageBig":"","ratingDescription":"","ratingDescriptionAlt":"","synopsis":"After his home is conquered by the tyrannical Emperors who now lead Rome, Lucius is forced to enter the Colosseum and must look to his past to find strength to return the glory of Rome to its people.","synopsisAlt":"بعد غزو منزله من قبل الأباطرة الاستبداديين الذين يقودون روما الآن، يضطر لوسيوس إلى دخول\r\nالكولوسيوم ويجب أن ينظر إلى ماضيه للعثور على القوة لإعادة مجد روما إلى شعبها.","hOFilmCode":"A000002641","runTime":120,"runTimeStr":"2 hr 0 min","openingDate":"04 Nov 2026","trailerUrl":"","comingSoon":true,"scheduledAtCinema":false,"genre":"Action, Adventure","genreAlt":"أكشن، مغامرات","distributorName":"Four Star Films","language":"English","languageAlt":"إنجليزي","director":{"id":"0000000018","firstName":"Ridley ","lastName":"Scott","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"","webimgbig":"","webadvance":"","webadvance2":"","webadvance3":"","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002419_137.jpg","mobimgbig":"","mobadvance":"","sliderimgurl":"#0F0F0F","shareUrl":"http://127.0.0.1:9/movie-details/Gladiator-III/HO00002419","tag":"","tagAr":null,"tagColor":null,"cast":[{"id":"0000001702","firstName":"Denzel ","lastName":"Washington","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000004758","firstName":"Jon  ","lastName":"Keeyes","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"}],"movieCinemas":[],"movieExperience":[],"movieTimings":[]},{"id":"HO00002436","title":"The Greatest of All Time (G.O.A.T) - Tamil","titleAlt":"ذا قریتست اوف اول تایم - تامیل","subTitle":"Arabic","subTitleAlt":"عربي","rating":"T13+","ratingColor":"#FFA700","ratingImageBig":"https://cdn.cinescape.com.kw/ratingImages/l-t13+.png","ratingDescription":"Only viewers of age 13 and above are allowed entry.","ratingDescriptionAlt":"يسمح بدخول من هم في سن 13 فما فوق فقط.","synopsis":"Consequences from an unknown past haunts the present of a special anti terrorist squad. How will they confront it?","synopsisAlt":"عواقب الماضي المجھول تطارد وجود فرقة خاصة لمكافحة الإرھاب. كیف سیواجھون ذلك؟","hOFilmCode":"A000002660","runTime":178,"runTimeStr":"2 hr 58 min","openingDate":"18 Feb 2027","trailerUrl":"https://youtu.be/W0Tt0iSzUNE","comingSoon":true,"scheduledAtCinema":false,"genre":"Action, Adventure","genreAlt":"أكشن، مغامرات","distributorName":"Phars Film","language":"Tamil","languageAlt":"تاميل","director":{"id":"0000004785","firstName":"Venkat","lastName":"Prabhu","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_small/HO00002436_792.jpg","webimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_big/HO00002436_472.jpg","webadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance/HO00002436_655.jpg","webadvance2":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance2/HO00002436_780.jpg","webadvance3":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance3/HO00002436_765.jpg","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002436_147.jpg","mobimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_big/HO00002436_662.jpg","mobadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_advance/HO00002436_273.jpg","sliderimgurl":"#b58560","shareUrl":"http://127.0.0.1:9/movie-details/The-Greatest-of-All-Time-(G.O.A.T)---Tamil/HO00002436","tag":"NEW","tagAr":"جديد","tagColor":"#E12329","cast":[{"id":"0000000627","firstName":"Vijay","lastName":"Joseph ","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000002278","firstName":"Prashanth ","lastName":"Thiagarajan","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":[],"movieExperience":[],"movieTimings":[]},{"id":"HO00002395","title":"Bad Boys: Ride or Die","titleAlt":"باد بويز: رايد اور داي","subTitle":"Arabic","subTitleAlt":"عربي","rating":"18+","ratingColor":"#000000","ratingImageBig":"","ratingDescription":"","ratingDescriptionAlt":"","synopsis":"When their late police captain gets linked to drug cartels, wisecracking Miami cops Mike Lowrey and Marcus Burnett embark on a dangerous mission to clear his name.","synopsisAlt":"عندما يرتبط قائد الشرطة الراحل بالكارتل المخدرات، يشرع شرطي ميامي مايك لوري وماركوس\r\n.بورنيت في مهمة خطيرة لتبرئة اسمه","hOFilmCode":"A000002611","runTime":112,"runTimeStr":"1 hr 52 min","openingDate":"11 Mar 2027","trailerUrl":"https://youtu.be/1QW0K1sZte0","comingSoon":true,"scheduledAtCinema":false,"genre":"Action, Adventure","genreAlt":"أكشن، مغامرات","distributorName":"Empire","language":"English","languageAlt":"إنجليزي","director":{"id":"0000004727","firstName":"Shadi  ","lastName":"Ali","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_small/HO00002395_020.jpg","webimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_big/HO00002395_632.jpg","webadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance/HO00002395_076.jpg","webadvance2":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance2/HO00002395_610.jpg","webadvance3":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance3/HO00002395_812.jpg","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002395_120.jpg","mobimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_big/HO00002395_371.jpg","mobadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_advance/HO00002395_286.jpg","sliderimgurl":"#774c23","shareUrl":"http://127.0.0.1:9/movie-details/Bad-Boys:-Ride-or-Die/HO00002395","tag":"","tagAr":null,"tagColor":null,"cast":[{"id":"0000002142","firstName":"Vanessa ","lastName":"Hudgens","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000003635","firstName":"Martin ","lastName":"Lawrence","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":[],"movieExperience":[],"movieTimings":[]},{"id":"HO00002431","title":"Haunted Heart","titleAlt":"هونتد هارت","subTitle":"Arabic","subTitleAlt":"عربي","rating":"T13+","ratingColor":"#FFA700","ratingImageBig":"https://cdn.cinescape.com.kw/ratingImages/l-t13+.png","ratingDescription":"Only viewers of age 13 and above are allowed entry.","ratingDescriptionAlt":"يسمح بدخول من هم في سن 13 فما فوق فقط.","synopsis":"When Alex joins the team of a boutique seaside restaurant, tensions rise as she falls for the enigmatic restaurant manager Max. Blinded by her feelings, the relationship slowly slides into a harrowing tale of survival.","synopsisAlt":"عندما تنضم أليكس إلى فريق مطعم على شاطئ البحر، تزداد التوترات لنها تقع في حب مدير\r\nالطعم الغامض ماكس. أعمتها مشاعرها، تنزلق العلقة ببطء إلى قصة مروعة عن البقاء على قيد\r\n.الحياة","hOFilmCode":"A000002654","runTime":128,"runTimeStr":"2 hr 8 min","openingDate":"16 Sep 2027","trailerUrl":"https://youtu.be/MCNwzwZEs1Q","comingSoon":true,"scheduledAtCinema":false,"genre":"Romance, Thriller","genreAlt":null,"distributorName":"Falcon Film","language":"English","languageAlt":"إنجليزي","director":{"id":"0000004774","firstName":"Fernando ","lastName":"Trueba","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Director"},"producer":null,"webimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_small/HO00002431_683.jpg","webimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_big/HO00002431_030.jpg","webadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance/HO00002431_469.jpg","webadvance2":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance2/HO00002431_717.jpg","webadvance3":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/web_advance3/HO00002431_664.jpg","mobimgsmall":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_small/HO00002431_605.jpg","mobimgbig":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_big/HO00002431_231.jpg","mobadvance":"https://cinescape-test-app.s3.eu-north-1.amazonaws.com/movies/mob_advance/HO00002431_392.jpg","sliderimgurl":"#f2bb2d","shareUrl":"http://127.0.0.1:9/movie-details/Haunted-Heart/HO00002431","tag":"NEW","tagAr":"جديد","tagColor":"#E12329","cast":[{"id":"0000004775","firstName":"Malt","lastName":"Dillon","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"},{"id":"0000004776","firstName":"Aida","lastName":"Folcha","firstNameAlt":null,"lastNameAlt":null,"urlToDetails":"","urlToPicture":"","personType":"Actor"}],"movieCinemas":[],"movieExperience":[],"movieTimings":[]},{"id":"HO00002427","title":"Ozi: Voice of the Forest","titleAlt":"اوزي: ساوند اوف ذا فورست","subTitle":"Arabic","subTitleAlt":"عربي","rating":"PG","ratingColor":"#f9c611","ratingImageBig":"https://cdn.cinescape.com.kw/ratingImages/l-pg.png","ratingDescription":"Parental Guidance - Ages below 13 are required to be accompanied by a parent or an adult of age 18 and above.","ratingDescriptionAlt":"مراقبة ولي أمر - يسمح بدخول كافة الأعمار، ويشترط لمن هم في سن أقل من 13 مرافقة ولي أمر أو شخص بعمر 18 فما فوق.","synopsis":"This is the story of Ozi, an orphan orangutan who uses her influencer skills to save her forest and home from  …(truncated)
2 execution steps
  1. POST content/comingsoon 0.02s
  2. Verify HTTP 200 with code 10001 and a list 0.00s
✓ Passed

API-07 Email domains: common domains are offered

✓✓✓✓✓✓✓✓✓✓ 0.02s

api-07-email-domains.spec.ts

What it checks: The quick-pick email domains used on the kiosk keyboard load, include @gmail.com and are well formed.

Why it matters: Customers use these buttons to type their email faster when receiving tickets by email.

CheckExpectedActualResult
HTTP status of content/email-domains200200 ✓ Pass
Response code1000110001 ✓ Pass
Domains offeredcontains "@gmail.com"["@gmail.com","@outlook.com","@hotmail.com","@yahoo.com"] ✓ Pass
Badly formatted domains[][] ✓ Pass
GET http://<kiosk-api-host>:8090/api/content/email-domains HTTP 200 15 ms · 265 bytes

✓ Read-only call: List email domains

Response message(empty) Code10001 Resultsuccess
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:24 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 10001,
  "result": "success",
  "msg": "",
  "output": [
    {
      "EmailCode": "GMAIL",
      "ExtensionName": "@gmail.com"
    },
    {
      "EmailCode": "OUTLOOK",
      "ExtensionName": "@outlook.com"
    },
    {
      "EmailCode": "HOTMAIL",
      "ExtensionName": "@hotmail.com"
    },
    {
      "EmailCode": "YAHOO",
      "ExtensionName": "@yahoo.com"
    }
  ]
}
3 execution steps
  1. GET content/email-domains 0.02s
  2. Verify response is successful 0.00s
  3. Verify @gmail.com is offered and every domain starts with @ 0.00s
✓ Passed

API-08 Club card: top-up amounts are listed in ascending KWD

·✓✓✓✓✓✓✓✓✓ 0.03s

api-08-clubcard-amounts.spec.ts

What it checks: The club card top-up amounts load as positive values in ascending order, each labelled "KWD n".

Why it matters: The Top Up screen shows these buttons, and a wrong label would charge a different amount than shown.

CheckExpectedActualResult
HTTP status of clubcard/getamounts200200 ✓ Pass
Response code1000110001 ✓ Pass
Number of top-up amounts> 010 ✓ Pass
Non-positive amounts[][] ✓ Pass
Labels not matching "KWD n"[][] ✓ Pass
Amounts in ascending order[5,10,15,20,25,30,35,40,45,50][5,10,15,20,25,30,35,40,45,50] ✓ Pass
GET http://<kiosk-api-host>:8090/api/clubcard/getamounts HTTP 200 20 ms · 429 bytes

✓ Read-only call: List club card top-up amounts

Response message(empty) Code10001 Resultsuccess
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:24 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 10001,
  "result": "success",
  "msg": "",
  "output": {
    "amounts": [
      {
        "amount": 5,
        "amountStr": "KWD 5"
      },
      {
        "amount": 10,
        "amountStr": "KWD 10"
      },
      {
        "amount": 15,
        "amountStr": "KWD 15"
      },
      {
        "amount": 20,
        "amountStr": "KWD 20"
      },
      {
        "amount": 25,
        "amountStr": "KWD 25"
      },
      {
        "amount": 30,
        "amountStr": "KWD 30"
      },
      {
        "amount": 35,
        "amountStr": "KWD 35"
      },
      {
        "amount": 40,
        "amountStr": "KWD 40"
      },
      {
        "amount": 45,
        "amountStr": "KWD 45"
      },
      {
        "amount": 50,
        "amountStr": "KWD 50"
      }
    ],
    "paymodes": null
  }
}
3 execution steps
  1. GET clubcard/getamounts 0.02s
  2. Verify response is successful 0.00s
  3. Verify amounts are positive, ascending and labelled "KWD n" 0.00s
✓ Passed

API-09 Pickup: an unknown booking reference is not found

··✓✓✓✓✓✓✓✓ 0.06s

api-09-pickup-unknown-booking.spec.ts

What it checks: Looking up a booking reference that does not exist returns "Booking not found".

Why it matters: Prevents printing tickets for a mistyped or fake booking reference on the Pickup screen.

CheckExpectedActualResult
HTTP status of history/kiosk/booking?cinemaId=0000000001&bookingReference=ZZZZ0000200200 ✓ Pass
Response code1100111001 ✓ Pass
Response message"Booking not found""Booking not found" ✓ Pass
GET http://<kiosk-api-host>:8090/api/history/kiosk/booking?cinemaId=0000000001&bookingReference=ZZZZ0000 HTTP 200 55 ms · 71 bytes

✓ Read-only call: Look up a booking for pickup

Response messageBooking not found Code11001 Resulterror
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:25 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 11001,
  "result": "error",
  "msg": "Booking not found",
  "output": null
}
2 execution steps
  1. GET history/kiosk/booking?cinemaId=0000000001&bookingReference=ZZZZ0000 0.06s
  2. Verify "Booking not found" is returned 0.00s
✓ Passed

API-10 KNET payment status: an unknown booking has no active booking

···✓✓✓✓✓✓✓ 0.02s

api-10-payment-status-unknown.spec.ts

What it checks: Checking KNET payment status for a booking that does not exist returns "There are no active bookings." (not 403/404).

Why it matters: The kiosk polls this endpoint after every card payment. The logs show thousands of 403/404 answers here.

CheckExpectedActualResult
HTTP status of payment/knet/kiosk/status?trackId=0&bookingId=0200200 ✓ Pass
Response code1202012020 ✓ Pass
Response message"There are no active bookings.""There are no active bookings." ✓ Pass
GET http://<kiosk-api-host>:8090/api/payment/knet/kiosk/status?trackId=0&bookingId=0 HTTP 200 14 ms · 84 bytes

✓ Read-only call: Read KNET payment status

Response messageThere are no active bookings. Code12020 Resultdialog
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:25 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 12020,
  "result": "dialog",
  "msg": "There are no active bookings.",
  "output": null
}
2 execution steps
  1. GET payment/knet/kiosk/status?trackId=0&bookingId=0 0.02s
  2. Verify "There are no active bookings." is returned 0.00s
✓ Passed

API-11 Customer login: an unknown user is asked to sign up

····✓✓✓✓✓✓ 0.21s

api-11-login-invalid.spec.ts

What it checks: Logging in with an email that has no account returns "User not found, Please signup". Uses a made-up user, so no real account is touched.

Why it matters: The Account screen must guide unknown customers to register instead of failing silently.

CheckExpectedActualResult
HTTP status of customer/login200200 ✓ Pass
Response code1200112001 ✓ Pass
Response message"User not found, Please signup""User not found, Please signup" ✓ Pass
POST http://<kiosk-api-host>:8090/api/customer/login HTTP 200 205 ms · 84 bytes

✓ Read-only call: Login attempt (tests use a non-existent user only)

Response messageUser not found, Please signup Code12001 Resultdialog
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
{
  "userName": "qa.automation.nouser@example.invalid",
  "password": "not-a-real-password"
}
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
content-length84
dateWed, 30 Sep 2026 07:13:25 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 12001,
  "result": "dialog",
  "msg": "User not found, Please signup",
  "output": null
}
2 execution steps
  1. POST customer/login 0.21s
  2. Verify "User not found, Please signup" is returned 0.00s
✓ Passed

API-12 Security: requests without valid kiosk credentials are rejected

·····✓✓✓✓✓ 0.07s

api-12-auth-rejections.spec.ts

What it checks: Kiosk-only endpoints reject a missing key, a wrong key, and a missing "platform: KIOSK" header.

Why it matters: Stops anyone on the network from calling kiosk payment endpoints. Also documents the 403 the real kiosks hit when the platform header is missing.

CheckExpectedActualResult
No key: HTTP status401401 ✓ Pass
No key: response code1200212002 ✓ Pass
No key: response message"Kiosk key rejected""Kiosk key rejected" ✓ Pass
Wrong key: HTTP status401401 ✓ Pass
Wrong key: response message"Kiosk key rejected""Kiosk key rejected" ✓ Pass
No platform header: HTTP status403403 ✓ Pass
No platform header: response message"This endpoint is for configured kiosks only""This endpoint is for configured kiosks only" ✓ Pass
GET http://<kiosk-api-host>:8090/api/payment/knet/kiosk/status?trackId=0&bookingId=0 HTTP 401 18 ms · 72 bytes

✓ Read-only call: Read KNET payment status

Response messageKiosk key rejected Code12002 Resulterror
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
(no body)
Response headers
content-typeapplication/json;charset=ISO-8859-1
content-length72
dateWed, 30 Sep 2026 07:13:25 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "result": "error",
  "code": 12002,
  "msg": "Kiosk key rejected",
  "output": null
}
GET http://<kiosk-api-host>:8090/api/payment/knet/kiosk/status?trackId=0&bookingId=0 HTTP 401 13 ms · 72 bytes

✓ Read-only call: Read KNET payment status

Response messageKiosk key rejected Code12002 Resulterror
Request headers & body
Acceptapplication/json
platformKIOSK
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
content-typeapplication/json;charset=ISO-8859-1
content-length72
dateWed, 30 Sep 2026 07:13:25 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "result": "error",
  "code": 12002,
  "msg": "Kiosk key rejected",
  "output": null
}
GET http://<kiosk-api-host>:8090/api/payment/knet/kiosk/status?trackId=0&bookingId=0 HTTP 403 19 ms · 97 bytes

✓ Read-only call: Read KNET payment status

Response messageThis endpoint is for configured kiosks only Code12002 Resulterror
Request headers & body
Acceptapplication/json
appversion1.0.0
X-Kiosk-Key***
(no body)
Response headers
varyOrigin, Access-Control-Request-Method, Access-Control-Request-Headers
content-typeapplication/json
transfer-encodingchunked
dateWed, 30 Sep 2026 07:13:25 GMT
keep-alivetimeout=60
connectionkeep-alive
Full response body
{
  "code": 12002,
  "result": "error",
  "msg": "This endpoint is for configured kiosks only",
  "output": null
}
6 execution steps
  1. Missing kiosk key → 401 "Kiosk key rejected" 0.02s
  2. GET payment/knet/kiosk/status?trackId=0&bookingId=0 0.02s
  3. Wrong kiosk key → 401 "Kiosk key rejected" 0.01s
  4. GET payment/knet/kiosk/status?trackId=0&bookingId=0 0.01s
  5. Missing platform header → 403 "configured kiosks only" 0.02s
  6. GET payment/knet/kiosk/status?trackId=0&bookingId=0 0.02s