@@ -806,3 +806,120 @@ async function clickFirstTeamWebhookCta(page: Page) {
806
806
const teamId = Number ( new URL ( url ) . searchParams . get ( "teamId" ) ) as number ;
807
807
return teamId ;
808
808
}
809
+
810
+ test . describe ( "BOOKING_NO_SHOW_UPDATED" , async ( ) => {
811
+ test ( "on marking an attendee as no-show, triggers webhook" , async ( { page, users } ) => {
812
+ const webhookReceiver = createHttpServer ( ) ;
813
+ // --- create a user
814
+ const user = await users . create ( ) ;
815
+
816
+ // --- login as that user
817
+ await user . apiLogin ( ) ;
818
+
819
+ await page . goto ( `/settings/developer/webhooks` ) ;
820
+
821
+ // --- add webhook
822
+ await page . click ( '[data-testid="new_webhook"]' ) ;
823
+
824
+ await page . fill ( '[name="subscriberUrl"]' , webhookReceiver . url ) ;
825
+
826
+ await page . fill ( '[name="secret"]' , "secret" ) ;
827
+
828
+ await Promise . all ( [
829
+ page . click ( "[type=submit]" ) ,
830
+ page . waitForURL ( ( url ) => url . pathname . endsWith ( "/settings/developer/webhooks" ) ) ,
831
+ ] ) ;
832
+
833
+ // page contains the url
834
+ expect ( page . locator ( `text='${ webhookReceiver . url } '` ) ) . toBeDefined ( ) ;
835
+
836
+ // --- visit user page
837
+ await page . goto ( `/${ user . username } ` ) ;
838
+
839
+ // --- mark the user's attendee as no-show
840
+ // await bookOptinEvent(page);
841
+
842
+ // --- check that webhook was called
843
+
844
+ await webhookReceiver . waitForRequestCount ( 1 ) ;
845
+
846
+ const [ request ] = webhookReceiver . requestList ;
847
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
848
+ const body = request . body as any ;
849
+
850
+ body . createdAt = dynamic ;
851
+ body . payload . startTime = dynamic ;
852
+ body . payload . endTime = dynamic ;
853
+ body . payload . location = dynamic ;
854
+ for ( const attendee of body . payload . attendees ) {
855
+ attendee . timeZone = dynamic ;
856
+ attendee . language = dynamic ;
857
+ }
858
+ body . payload . organizer . id = dynamic ;
859
+ body . payload . organizer . email = dynamic ;
860
+ body . payload . organizer . timeZone = dynamic ;
861
+ body . payload . organizer . language = dynamic ;
862
+ body . payload . uid = dynamic ;
863
+ body . payload . bookingId = dynamic ;
864
+ body . payload . additionalInformation = dynamic ;
865
+ body . payload . requiresConfirmation = dynamic ;
866
+ body . payload . eventTypeId = dynamic ;
867
+ body . payload . videoCallData = dynamic ;
868
+ body . payload . appsStatus = dynamic ;
869
+ body . payload . metadata . videoCallUrl = dynamic ;
870
+
871
+ expect ( body ) . toMatchObject ( {
872
+ triggerEvent : "BOOKING_REQUESTED" ,
873
+ createdAt : "[redacted/dynamic]" ,
874
+ payload : {
875
+ type : "opt-in" ,
876
+ title : "Opt in between Nameless and Test Testson" ,
877
+ customInputs : { } ,
878
+ startTime : "[redacted/dynamic]" ,
879
+ endTime : "[redacted/dynamic]" ,
880
+ organizer : {
881
+ id : "[redacted/dynamic]" ,
882
+ name : "Nameless" ,
883
+ email : "[redacted/dynamic]" ,
884
+ timeZone : "[redacted/dynamic]" ,
885
+ language : "[redacted/dynamic]" ,
886
+ } ,
887
+ responses : {
888
+ email : {
889
+ value : "test@example.com" ,
890
+ label : "email_address" ,
891
+ } ,
892
+ name : {
893
+ value : "Test Testson" ,
894
+ label : "your_name" ,
895
+ } ,
896
+ } ,
897
+ userFieldsResponses : { } ,
898
+ attendees : [
899
+ {
900
+ email : "test@example.com" ,
901
+ name : "Test Testson" ,
902
+ timeZone : "[redacted/dynamic]" ,
903
+ language : "[redacted/dynamic]" ,
904
+ } ,
905
+ ] ,
906
+ location : "[redacted/dynamic]" ,
907
+ destinationCalendar : null ,
908
+ requiresConfirmation : "[redacted/dynamic]" ,
909
+ eventTypeId : "[redacted/dynamic]" ,
910
+ uid : "[redacted/dynamic]" ,
911
+ eventTitle : "Opt in" ,
912
+ eventDescription : null ,
913
+ price : 0 ,
914
+ currency : "usd" ,
915
+ length : 30 ,
916
+ bookingId : "[redacted/dynamic]" ,
917
+ status : "PENDING" ,
918
+ additionalInformation : "[redacted/dynamic]" ,
919
+ metadata : { videoCallUrl : "[redacted/dynamic]" } ,
920
+ } ,
921
+ } ) ;
922
+
923
+ webhookReceiver . close ( ) ;
924
+ } ) ;
925
+ } ) ;
0 commit comments