Repository: kiwicom/mobile
Pull request #1073 (2018-09-07 07:52:44)

Shared: Adding accessibilityTrait button to our button components


Patch:
diff --git a/.eslintrc.js b/.eslintrc.js
index 481eac9d..30411315 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -56,6 +56,7 @@ module.exports = {
               "TouchableHighlight", // Touchable
               "TouchableNativeFeedback", // Touchable
               "TouchableOpacity", // Touchable
+              "TouchableWithoutFeedback", // TouchableWithoutFeedback
               "Switch", //Switch
               "Alert", // Alert (localization)
               "TextInput",
diff --git a/app/MMB/src/__generated__/MainMenuContainerQuery.graphql.js b/app/MMB/src/__generated__/MainMenuContainerQuery.graphql.js
index a52a6695..f1f66ac3 100644
--- a/app/MMB/src/__generated__/MainMenuContainerQuery.graphql.js
+++ b/app/MMB/src/__generated__/MainMenuContainerQuery.graphql.js
@@ -1,6 +1,6 @@
 /**
  * @flow
- * @relayHash 6f30100d9356386d0d94c309964bc149
+ * @relayHash ca7796d3046e8676275c83e1c6964904
  */
 
 /* eslint-disable */
@@ -225,6 +225,8 @@ fragment TripTitle on Trip {
 
 fragment TimelineTrip on Trip {
   legs {
+    ...TimelineLegWrapper
+    guarantee
     departure {
       ...TimelineDeparture_routeStop
     }
@@ -237,6 +239,10 @@ fragment TimelineTrip on Trip {
   }
 }
 
+fragment TimelineLegWrapper on Leg {
+  ...TripStopOver
+}
+
 fragment TimelineDeparture_routeStop on RouteStop {
   ...TimelineTitle
   ...TimelineTerminal
@@ -289,6 +295,10 @@ fragment TimelineTitle on RouteStop {
   }
 }
 
+fragment TripStopOver on Leg {
+  guarantee
+}
+
 fragment MulticityTitle on Trip {
   departure {
     ...MulticityName
@@ -527,6 +537,13 @@ v13 = {
   "plural": true,
   "selections": [
     v4,
+    {
+      "kind": "ScalarField",
+      "alias": null,
+      "name": "guarantee",
+      "args": null,
+      "storageKey": null
+    },
     {
       "kind": "LinkedField",
       "alias": null,
@@ -673,7 +690,7 @@ return {
   "operationKind": "query",
   "name": "MainMenuContainerQuery",
   "id": null,
-  "text": "query MainMenuContainerQuery(\n  $bookingId: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $bookingId, authToken: $authToken) {\n    __typename\n    ...MainMenu\n    id\n  }\n}\n\nfragment MainMenu on BookingInterface {\n  databaseId\n  authToken\n  isPastBooking\n  ...Header\n  ...PassengerMenuGroup\n  ...MissingInformation\n  ...FlightServices\n}\n\nfragment Header on BookingInterface {\n  isPastBooking\n  ...StatusBar\n  ...TripInfo\n  ...TripOverview\n}\n\nfragment PassengerMenuGroup on BookingInterface {\n  ...PassengerMenuDetail\n}\n\nfragment MissingInformation on BookingInterface {\n  passengers {\n    travelDocument {\n      idNumber\n    }\n  }\n}\n\nfragment FlightServices on BookingInterface {\n  __typename\n  isPastBooking\n  ...FlightServicesOneWay\n  ...FlightServicesReturn\n  ...FlightServicesMulticity\n}\n\nfragment FlightServicesOneWay on BookingInterface {\n  ... on BookingOneWay {\n    trip {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesReturn on BookingInterface {\n  ... on BookingReturn {\n    inbound {\n      ...FlightServicesMenuItem\n    }\n    outbound {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesMulticity on BookingInterface {\n  ... on BookingMulticity {\n    trips {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesMenuItem on Trip {\n  legs {\n    type\n    id\n  }\n}\n\nfragment PassengerMenuDetail on BookingInterface {\n  ...Visa\n  passengers {\n    databaseId\n    ...Passenger\n  }\n}\n\nfragment Visa on BookingInterface {\n  passengers {\n    visaInformation {\n      requiredIn {\n        name\n        id\n      }\n      warningIn {\n        name\n        id\n      }\n    }\n  }\n}\n\nfragment Passenger on Passenger {\n  fullName\n  title\n  birthday\n}\n\nfragment StatusBar on BookingInterface {\n  ...StatusBarIcon\n  databaseId\n}\n\nfragment TripInfo on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...TripInfoOneWay\n  }\n  ... on BookingReturn {\n    ...TripInfoReturn\n  }\n  ... on BookingMulticity {\n    ...TripInfoMulticity\n  }\n}\n\nfragment TripOverview on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...OneWayTimeline\n  }\n  ... on BookingReturn {\n    ...ReturnTimeline\n  }\n  ... on BookingMulticity {\n    ...MulticityTimeline\n  }\n}\n\nfragment OneWayTimeline on BookingOneWay {\n  trip {\n    ...Timeline\n  }\n}\n\nfragment ReturnTimeline on BookingReturn {\n  outbound {\n    ...Timeline\n  }\n  inbound {\n    ...Timeline\n  }\n}\n\nfragment MulticityTimeline on BookingMulticity {\n  trips {\n    ...Timeline\n  }\n}\n\nfragment Timeline on Trip {\n  ...TripTitle\n  departure {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  legs {\n    id\n  }\n  ...TimelineTrip\n}\n\nfragment TripTitle on Trip {\n  ...MulticityTitle\n  duration\n}\n\nfragment TimelineTrip on Trip {\n  legs {\n    departure {\n      ...TimelineDeparture_routeStop\n    }\n    arrival {\n      ...TimelineArrival\n      ...TimelineDeparture_arrival\n    }\n    ...TimelineDeparture_legInfo\n    id\n  }\n}\n\nfragment TimelineDeparture_routeStop on RouteStop {\n  ...TimelineTitle\n  ...TimelineTerminal\n}\n\nfragment TimelineArrival on RouteStop {\n  ...TimelineTitle\n}\n\nfragment TimelineDeparture_arrival on RouteStop {\n  ...TimelineTerminal\n}\n\nfragment TimelineDeparture_legInfo on Leg {\n  flightNumber\n  operatingAirline {\n    name\n    iata\n  }\n  airline {\n    name\n    logoUrl\n    code\n  }\n  vehicle {\n    model\n    manufacturer\n  }\n}\n\nfragment TimelineTerminal on RouteStop {\n  terminal\n  airport {\n    code\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TimelineTitle on RouteStop {\n  localTime\n  airport {\n    locationId\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment MulticityTitle on Trip {\n  departure {\n    ...MulticityName\n  }\n  arrival {\n    ...MulticityName\n  }\n}\n\nfragment MulticityName on RouteStop {\n  airport {\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TripInfoOneWay on BookingOneWay {\n  trip {\n    ...TripCities\n    ...TripTimes\n  }\n}\n\nfragment TripInfoReturn on BookingReturn {\n  outbound {\n    ...TripCities\n    ...TripTimes\n  }\n  inbound {\n    ...TripTimes\n  }\n}\n\nfragment TripInfoMulticity on BookingMulticity {\n  trips {\n    ...TripCities\n    ...TripTimes\n  }\n}\n\nfragment TripCities on Trip {\n  departure {\n    ...Location\n  }\n  arrival {\n    ...Location\n  }\n}\n\nfragment TripTimes on Trip {\n  duration\n  departure {\n    ...DateTime\n  }\n  arrival {\n    ...DateTime\n  }\n}\n\nfragment DateTime on RouteStop {\n  localTime\n}\n\nfragment Location on RouteStop {\n  airport {\n    city {\n      name\n    }\n    ...CountryFlag\n    id\n  }\n}\n\nfragment CountryFlag on Location {\n  countryFlagURL\n}\n\nfragment StatusBarIcon on BookingInterface {\n  status\n  isPastBooking\n}\n",
+  "text": "query MainMenuContainerQuery(\n  $bookingId: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $bookingId, authToken: $authToken) {\n    __typename\n    ...MainMenu\n    id\n  }\n}\n\nfragment MainMenu on BookingInterface {\n  databaseId\n  authToken\n  isPastBooking\n  ...Header\n  ...PassengerMenuGroup\n  ...MissingInformation\n  ...FlightServices\n}\n\nfragment Header on BookingInterface {\n  isPastBooking\n  ...StatusBar\n  ...TripInfo\n  ...TripOverview\n}\n\nfragment PassengerMenuGroup on BookingInterface {\n  ...PassengerMenuDetail\n}\n\nfragment MissingInformation on BookingInterface {\n  passengers {\n    travelDocument {\n      idNumber\n    }\n  }\n}\n\nfragment FlightServices on BookingInterface {\n  __typename\n  isPastBooking\n  ...FlightServicesOneWay\n  ...FlightServicesReturn\n  ...FlightServicesMulticity\n}\n\nfragment FlightServicesOneWay on BookingInterface {\n  ... on BookingOneWay {\n    trip {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesReturn on BookingInterface {\n  ... on BookingReturn {\n    inbound {\n      ...FlightServicesMenuItem\n    }\n    outbound {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesMulticity on BookingInterface {\n  ... on BookingMulticity {\n    trips {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesMenuItem on Trip {\n  legs {\n    type\n    id\n  }\n}\n\nfragment PassengerMenuDetail on BookingInterface {\n  ...Visa\n  passengers {\n    databaseId\n    ...Passenger\n  }\n}\n\nfragment Visa on BookingInterface {\n  passengers {\n    visaInformation {\n      requiredIn {\n        name\n        id\n      }\n      warningIn {\n        name\n        id\n      }\n    }\n  }\n}\n\nfragment Passenger on Passenger {\n  fullName\n  title\n  birthday\n}\n\nfragment StatusBar on BookingInterface {\n  ...StatusBarIcon\n  databaseId\n}\n\nfragment TripInfo on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...TripInfoOneWay\n  }\n  ... on BookingReturn {\n    ...TripInfoReturn\n  }\n  ... on BookingMulticity {\n    ...TripInfoMulticity\n  }\n}\n\nfragment TripOverview on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...OneWayTimeline\n  }\n  ... on BookingReturn {\n    ...ReturnTimeline\n  }\n  ... on BookingMulticity {\n    ...MulticityTimeline\n  }\n}\n\nfragment OneWayTimeline on BookingOneWay {\n  trip {\n    ...Timeline\n  }\n}\n\nfragment ReturnTimeline on BookingReturn {\n  outbound {\n    ...Timeline\n  }\n  inbound {\n    ...Timeline\n  }\n}\n\nfragment MulticityTimeline on BookingMulticity {\n  trips {\n    ...Timeline\n  }\n}\n\nfragment Timeline on Trip {\n  ...TripTitle\n  departure {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  legs {\n    id\n  }\n  ...TimelineTrip\n}\n\nfragment TripTitle on Trip {\n  ...MulticityTitle\n  duration\n}\n\nfragment TimelineTrip on Trip {\n  legs {\n    ...TimelineLegWrapper\n    guarantee\n    departure {\n      ...TimelineDeparture_routeStop\n    }\n    arrival {\n      ...TimelineArrival\n      ...TimelineDeparture_arrival\n    }\n    ...TimelineDeparture_legInfo\n    id\n  }\n}\n\nfragment TimelineLegWrapper on Leg {\n  ...TripStopOver\n}\n\nfragment TimelineDeparture_routeStop on RouteStop {\n  ...TimelineTitle\n  ...TimelineTerminal\n}\n\nfragment TimelineArrival on RouteStop {\n  ...TimelineTitle\n}\n\nfragment TimelineDeparture_arrival on RouteStop {\n  ...TimelineTerminal\n}\n\nfragment TimelineDeparture_legInfo on Leg {\n  flightNumber\n  operatingAirline {\n    name\n    iata\n  }\n  airline {\n    name\n    logoUrl\n    code\n  }\n  vehicle {\n    model\n    manufacturer\n  }\n}\n\nfragment TimelineTerminal on RouteStop {\n  terminal\n  airport {\n    code\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TimelineTitle on RouteStop {\n  localTime\n  airport {\n    locationId\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TripStopOver on Leg {\n  guarantee\n}\n\nfragment MulticityTitle on Trip {\n  departure {\n    ...MulticityName\n  }\n  arrival {\n    ...MulticityName\n  }\n}\n\nfragment MulticityName on RouteStop {\n  airport {\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TripInfoOneWay on BookingOneWay {\n  trip {\n    ...TripCities\n    ...TripTimes\n  }\n}\n\nfragment TripInfoReturn on BookingReturn {\n  outbound {\n    ...TripCities\n    ...TripTimes\n  }\n  inbound {\n    ...TripTimes\n  }\n}\n\nfragment TripInfoMulticity on BookingMulticity {\n  trips {\n    ...TripCities\n    ...TripTimes\n  }\n}\n\nfragment TripCities on Trip {\n  departure {\n    ...Location\n  }\n  arrival {\n    ...Location\n  }\n}\n\nfragment TripTimes on Trip {\n  duration\n  departure {\n    ...DateTime\n  }\n  arrival {\n    ...DateTime\n  }\n}\n\nfragment DateTime on RouteStop {\n  localTime\n}\n\nfragment Location on RouteStop {\n  airport {\n    city {\n      name\n    }\n    ...CountryFlag\n    id\n  }\n}\n\nfragment CountryFlag on Location {\n  countryFlagURL\n}\n\nfragment StatusBarIcon on BookingInterface {\n  status\n  isPastBooking\n}\n",
   "metadata": {},
   "fragment": {
     "kind": "Fragment",
diff --git a/app/MMB/src/__generated__/MainMenuRefetchQuery.graphql.js b/app/MMB/src/__generated__/MainMenuRefetchQuery.graphql.js
index 954dfac0..0850859f 100644
--- a/app/MMB/src/__generated__/MainMenuRefetchQuery.graphql.js
+++ b/app/MMB/src/__generated__/MainMenuRefetchQuery.graphql.js
@@ -1,6 +1,6 @@
 /**
  * @flow
- * @relayHash 920cdcbab4b5cab4a4e01bd8ea9c4a76
+ * @relayHash 9717c9d8108b588713edd3c04d9073a8
  */
 
 /* eslint-disable */
@@ -225,6 +225,8 @@ fragment TripTitle on Trip {
 
 fragment TimelineTrip on Trip {
   legs {
+    ...TimelineLegWrapper
+    guarantee
     departure {
       ...TimelineDeparture_routeStop
     }
@@ -237,6 +239,10 @@ fragment TimelineTrip on Trip {
   }
 }
 
+fragment TimelineLegWrapper on Leg {
+  ...TripStopOver
+}
+
 fragment TimelineDeparture_routeStop on RouteStop {
   ...TimelineTitle
   ...TimelineTerminal
@@ -289,6 +295,10 @@ fragment TimelineTitle on RouteStop {
   }
 }
 
+fragment TripStopOver on Leg {
+  guarantee
+}
+
 fragment MulticityTitle on Trip {
   departure {
     ...MulticityName
@@ -527,6 +537,13 @@ v13 = {
   "plural": true,
   "selections": [
     v4,
+    {
+      "kind": "ScalarField",
+      "alias": null,
+      "name": "guarantee",
+      "args": null,
+      "storageKey": null
+    },
     {
       "kind": "LinkedField",
       "alias": null,
@@ -673,7 +690,7 @@ return {
   "operationKind": "query",
   "name": "MainMenuRefetchQuery",
   "id": null,
-  "text": "query MainMenuRefetchQuery(\n  $id: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $id, authToken: $authToken) {\n    __typename\n    ...MainMenu\n    id\n  }\n}\n\nfragment MainMenu on BookingInterface {\n  databaseId\n  authToken\n  isPastBooking\n  ...Header\n  ...PassengerMenuGroup\n  ...MissingInformation\n  ...FlightServices\n}\n\nfragment Header on BookingInterface {\n  isPastBooking\n  ...StatusBar\n  ...TripInfo\n  ...TripOverview\n}\n\nfragment PassengerMenuGroup on BookingInterface {\n  ...PassengerMenuDetail\n}\n\nfragment MissingInformation on BookingInterface {\n  passengers {\n    travelDocument {\n      idNumber\n    }\n  }\n}\n\nfragment FlightServices on BookingInterface {\n  __typename\n  isPastBooking\n  ...FlightServicesOneWay\n  ...FlightServicesReturn\n  ...FlightServicesMulticity\n}\n\nfragment FlightServicesOneWay on BookingInterface {\n  ... on BookingOneWay {\n    trip {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesReturn on BookingInterface {\n  ... on BookingReturn {\n    inbound {\n      ...FlightServicesMenuItem\n    }\n    outbound {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesMulticity on BookingInterface {\n  ... on BookingMulticity {\n    trips {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesMenuItem on Trip {\n  legs {\n    type\n    id\n  }\n}\n\nfragment PassengerMenuDetail on BookingInterface {\n  ...Visa\n  passengers {\n    databaseId\n    ...Passenger\n  }\n}\n\nfragment Visa on BookingInterface {\n  passengers {\n    visaInformation {\n      requiredIn {\n        name\n        id\n      }\n      warningIn {\n        name\n        id\n      }\n    }\n  }\n}\n\nfragment Passenger on Passenger {\n  fullName\n  title\n  birthday\n}\n\nfragment StatusBar on BookingInterface {\n  ...StatusBarIcon\n  databaseId\n}\n\nfragment TripInfo on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...TripInfoOneWay\n  }\n  ... on BookingReturn {\n    ...TripInfoReturn\n  }\n  ... on BookingMulticity {\n    ...TripInfoMulticity\n  }\n}\n\nfragment TripOverview on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...OneWayTimeline\n  }\n  ... on BookingReturn {\n    ...ReturnTimeline\n  }\n  ... on BookingMulticity {\n    ...MulticityTimeline\n  }\n}\n\nfragment OneWayTimeline on BookingOneWay {\n  trip {\n    ...Timeline\n  }\n}\n\nfragment ReturnTimeline on BookingReturn {\n  outbound {\n    ...Timeline\n  }\n  inbound {\n    ...Timeline\n  }\n}\n\nfragment MulticityTimeline on BookingMulticity {\n  trips {\n    ...Timeline\n  }\n}\n\nfragment Timeline on Trip {\n  ...TripTitle\n  departure {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  legs {\n    id\n  }\n  ...TimelineTrip\n}\n\nfragment TripTitle on Trip {\n  ...MulticityTitle\n  duration\n}\n\nfragment TimelineTrip on Trip {\n  legs {\n    departure {\n      ...TimelineDeparture_routeStop\n    }\n    arrival {\n      ...TimelineArrival\n      ...TimelineDeparture_arrival\n    }\n    ...TimelineDeparture_legInfo\n    id\n  }\n}\n\nfragment TimelineDeparture_routeStop on RouteStop {\n  ...TimelineTitle\n  ...TimelineTerminal\n}\n\nfragment TimelineArrival on RouteStop {\n  ...TimelineTitle\n}\n\nfragment TimelineDeparture_arrival on RouteStop {\n  ...TimelineTerminal\n}\n\nfragment TimelineDeparture_legInfo on Leg {\n  flightNumber\n  operatingAirline {\n    name\n    iata\n  }\n  airline {\n    name\n    logoUrl\n    code\n  }\n  vehicle {\n    model\n    manufacturer\n  }\n}\n\nfragment TimelineTerminal on RouteStop {\n  terminal\n  airport {\n    code\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TimelineTitle on RouteStop {\n  localTime\n  airport {\n    locationId\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment MulticityTitle on Trip {\n  departure {\n    ...MulticityName\n  }\n  arrival {\n    ...MulticityName\n  }\n}\n\nfragment MulticityName on RouteStop {\n  airport {\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TripInfoOneWay on BookingOneWay {\n  trip {\n    ...TripCities\n    ...TripTimes\n  }\n}\n\nfragment TripInfoReturn on BookingReturn {\n  outbound {\n    ...TripCities\n    ...TripTimes\n  }\n  inbound {\n    ...TripTimes\n  }\n}\n\nfragment TripInfoMulticity on BookingMulticity {\n  trips {\n    ...TripCities\n    ...TripTimes\n  }\n}\n\nfragment TripCities on Trip {\n  departure {\n    ...Location\n  }\n  arrival {\n    ...Location\n  }\n}\n\nfragment TripTimes on Trip {\n  duration\n  departure {\n    ...DateTime\n  }\n  arrival {\n    ...DateTime\n  }\n}\n\nfragment DateTime on RouteStop {\n  localTime\n}\n\nfragment Location on RouteStop {\n  airport {\n    city {\n      name\n    }\n    ...CountryFlag\n    id\n  }\n}\n\nfragment CountryFlag on Location {\n  countryFlagURL\n}\n\nfragment StatusBarIcon on BookingInterface {\n  status\n  isPastBooking\n}\n",
+  "text": "query MainMenuRefetchQuery(\n  $id: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $id, authToken: $authToken) {\n    __typename\n    ...MainMenu\n    id\n  }\n}\n\nfragment MainMenu on BookingInterface {\n  databaseId\n  authToken\n  isPastBooking\n  ...Header\n  ...PassengerMenuGroup\n  ...MissingInformation\n  ...FlightServices\n}\n\nfragment Header on BookingInterface {\n  isPastBooking\n  ...StatusBar\n  ...TripInfo\n  ...TripOverview\n}\n\nfragment PassengerMenuGroup on BookingInterface {\n  ...PassengerMenuDetail\n}\n\nfragment MissingInformation on BookingInterface {\n  passengers {\n    travelDocument {\n      idNumber\n    }\n  }\n}\n\nfragment FlightServices on BookingInterface {\n  __typename\n  isPastBooking\n  ...FlightServicesOneWay\n  ...FlightServicesReturn\n  ...FlightServicesMulticity\n}\n\nfragment FlightServicesOneWay on BookingInterface {\n  ... on BookingOneWay {\n    trip {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesReturn on BookingInterface {\n  ... on BookingReturn {\n    inbound {\n      ...FlightServicesMenuItem\n    }\n    outbound {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesMulticity on BookingInterface {\n  ... on BookingMulticity {\n    trips {\n      ...FlightServicesMenuItem\n    }\n  }\n}\n\nfragment FlightServicesMenuItem on Trip {\n  legs {\n    type\n    id\n  }\n}\n\nfragment PassengerMenuDetail on BookingInterface {\n  ...Visa\n  passengers {\n    databaseId\n    ...Passenger\n  }\n}\n\nfragment Visa on BookingInterface {\n  passengers {\n    visaInformation {\n      requiredIn {\n        name\n        id\n      }\n      warningIn {\n        name\n        id\n      }\n    }\n  }\n}\n\nfragment Passenger on Passenger {\n  fullName\n  title\n  birthday\n}\n\nfragment StatusBar on BookingInterface {\n  ...StatusBarIcon\n  databaseId\n}\n\nfragment TripInfo on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...TripInfoOneWay\n  }\n  ... on BookingReturn {\n    ...TripInfoReturn\n  }\n  ... on BookingMulticity {\n    ...TripInfoMulticity\n  }\n}\n\nfragment TripOverview on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...OneWayTimeline\n  }\n  ... on BookingReturn {\n    ...ReturnTimeline\n  }\n  ... on BookingMulticity {\n    ...MulticityTimeline\n  }\n}\n\nfragment OneWayTimeline on BookingOneWay {\n  trip {\n    ...Timeline\n  }\n}\n\nfragment ReturnTimeline on BookingReturn {\n  outbound {\n    ...Timeline\n  }\n  inbound {\n    ...Timeline\n  }\n}\n\nfragment MulticityTimeline on BookingMulticity {\n  trips {\n    ...Timeline\n  }\n}\n\nfragment Timeline on Trip {\n  ...TripTitle\n  departure {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  legs {\n    id\n  }\n  ...TimelineTrip\n}\n\nfragment TripTitle on Trip {\n  ...MulticityTitle\n  duration\n}\n\nfragment TimelineTrip on Trip {\n  legs {\n    ...TimelineLegWrapper\n    guarantee\n    departure {\n      ...TimelineDeparture_routeStop\n    }\n    arrival {\n      ...TimelineArrival\n      ...TimelineDeparture_arrival\n    }\n    ...TimelineDeparture_legInfo\n    id\n  }\n}\n\nfragment TimelineLegWrapper on Leg {\n  ...TripStopOver\n}\n\nfragment TimelineDeparture_routeStop on RouteStop {\n  ...TimelineTitle\n  ...TimelineTerminal\n}\n\nfragment TimelineArrival on RouteStop {\n  ...TimelineTitle\n}\n\nfragment TimelineDeparture_arrival on RouteStop {\n  ...TimelineTerminal\n}\n\nfragment TimelineDeparture_legInfo on Leg {\n  flightNumber\n  operatingAirline {\n    name\n    iata\n  }\n  airline {\n    name\n    logoUrl\n    code\n  }\n  vehicle {\n    model\n    manufacturer\n  }\n}\n\nfragment TimelineTerminal on RouteStop {\n  terminal\n  airport {\n    code\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TimelineTitle on RouteStop {\n  localTime\n  airport {\n    locationId\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TripStopOver on Leg {\n  guarantee\n}\n\nfragment MulticityTitle on Trip {\n  departure {\n    ...MulticityName\n  }\n  arrival {\n    ...MulticityName\n  }\n}\n\nfragment MulticityName on RouteStop {\n  airport {\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TripInfoOneWay on BookingOneWay {\n  trip {\n    ...TripCities\n    ...TripTimes\n  }\n}\n\nfragment TripInfoReturn on BookingReturn {\n  outbound {\n    ...TripCities\n    ...TripTimes\n  }\n  inbound {\n    ...TripTimes\n  }\n}\n\nfragment TripInfoMulticity on BookingMulticity {\n  trips {\n    ...TripCities\n    ...TripTimes\n  }\n}\n\nfragment TripCities on Trip {\n  departure {\n    ...Location\n  }\n  arrival {\n    ...Location\n  }\n}\n\nfragment TripTimes on Trip {\n  duration\n  departure {\n    ...DateTime\n  }\n  arrival {\n    ...DateTime\n  }\n}\n\nfragment DateTime on RouteStop {\n  localTime\n}\n\nfragment Location on RouteStop {\n  airport {\n    city {\n      name\n    }\n    ...CountryFlag\n    id\n  }\n}\n\nfragment CountryFlag on Location {\n  countryFlagURL\n}\n\nfragment StatusBarIcon on BookingInterface {\n  status\n  isPastBooking\n}\n",
   "metadata": {},
   "fragment": {
     "kind": "Fragment",
diff --git a/app/MMB/src/components/header/Header.js b/app/MMB/src/components/header/Header.js
index 0a007299..5b271fa8 100644
--- a/app/MMB/src/components/header/Header.js
+++ b/app/MMB/src/components/header/Header.js
@@ -1,9 +1,14 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback } from 'react-native';
+import { View } from 'react-native';
 import { graphql, createFragmentContainer } from '@kiwicom/mobile-relay';
-import { AdaptableLayout, TextIcon, StyleSheet } from '@kiwicom/mobile-shared';
+import {
+  AdaptableLayout,
+  TextIcon,
+  StyleSheet,
+  TouchableWithoutFeedback,
+} from '@kiwicom/mobile-shared';
 import {
   SeparatorFullWidth,
   SeparatorTrimmed,
diff --git a/app/MMB/src/navigation/GuaranteeScreen.js b/app/MMB/src/navigation/GuaranteeScreen.js
new file mode 100644
index 00000000..d1019dec
--- /dev/null
+++ b/app/MMB/src/navigation/GuaranteeScreen.js
@@ -0,0 +1,37 @@
+// @flow strict
+
+import * as React from 'react';
+import { WebView } from '@kiwicom/mobile-shared';
+import {
+  HeaderButton,
+  type NavigationType,
+  HeaderTitle,
+} from '@kiwicom/mobile-navigation';
+import { Translation } from '@kiwicom/mobile-localization';
+
+type Props = {|
+  +navigation: NavigationType,
+|};
+
+export default function GuaranteeScreen() {
+  return (
+    <WebView
+      source={{ uri: 'https://www.kiwi.com/en/pages/guarantee?ui=webview' }}
+    />
+  );
+}
+
+GuaranteeScreen.navigationOptions = ({ navigation }: Props) => {
+  function goBack() {
+    navigation.goBack(null);
+  }
+
+  return {
+    headerLeft: <HeaderButton.CloseModal onPress={goBack} />,
+    headerTitle: (
+      <HeaderTitle>
+        <Translation id="mmb.guarantee_screen.title" />
+      </HeaderTitle>
+    ),
+  };
+};
diff --git a/app/MMB/src/navigation/NavigationStack.js b/app/MMB/src/navigation/NavigationStack.js
index d2cab1d8..310f48e1 100644
--- a/app/MMB/src/navigation/NavigationStack.js
+++ b/app/MMB/src/navigation/NavigationStack.js
@@ -17,6 +17,7 @@ import TravelDocumentModalScreen from './TravelDocumentModalScreen';
 import AppleWalletScreen from './AppleWalletScreen';
 import AddressPickerScreen from './AddressPickerScreen';
 import TransportationMap from '../scenes/tripServices/transportation/TransportationMap';
+import GuaranteeScreen from './GuaranteeScreen';
 
 // THIS IS ONLY FOR MOBILE DEVICES!
 const Screens = {};
@@ -103,6 +104,17 @@ const TransportationStack = StackNavigator(
   },
 );
 
+const GuaranteeStack = StackNavigator(
+  {
+    GuaranteeScreen: withMappedProps(GuaranteeScreen),
+  },
+  {
+    ...StackNavigatorOptions,
+    initialRouteName: 'GuaranteeScreen',
+    mode: 'modal',
+  },
+);
+
 export default StackNavigator(
   {
     MMBMainStack: {
@@ -114,6 +126,9 @@ export default StackNavigator(
     TransportationMap: {
       screen: TransportationStack,
     },
+    GuaranteeStack: {
+      screen: GuaranteeStack,
+    },
   },
   {
     ...StackNavigatorOptions,
diff --git a/app/MMB/src/scenes/tripOverview/TimelineDeparture.js b/app/MMB/src/scenes/tripOverview/TimelineDeparture.js
index 7baf0b22..1bf7ea67 100644
--- a/app/MMB/src/scenes/tripOverview/TimelineDeparture.js
+++ b/app/MMB/src/scenes/tripOverview/TimelineDeparture.js
@@ -79,12 +79,15 @@ function TimelineDeparture(props: Props) {
             }
           />
 
-          <TimelineRow
-            icon={<TextIcon code="R" style={styleSheet.icon} />}
-            value={
-              <Translation passThrough={`${manufacturer} ${flightModel}`} />
-            }
-          />
+          {manufacturer !== '' &&
+            flightModel !== '' && (
+              <TimelineRow
+                icon={<TextIcon code="R" style={styleSheet.icon} />}
+                value={
+                  <Translation passThrough={`${manufacturer} ${flightModel}`} />
+                }
+              />
+            )}
 
           <TimelineTerminal
             data={props.routeStop}
diff --git a/app/MMB/src/scenes/tripOverview/TimelineLegWrapper.js b/app/MMB/src/scenes/tripOverview/TimelineLegWrapper.js
index 363e0a5f..e7dc2d7a 100644
--- a/app/MMB/src/scenes/tripOverview/TimelineLegWrapper.js
+++ b/app/MMB/src/scenes/tripOverview/TimelineLegWrapper.js
@@ -5,23 +5,29 @@ import { View } from 'react-native';
 import { StyleSheet } from '@kiwicom/mobile-shared';
 import Dash from 'react-native-dash';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
+import { graphql, createFragmentContainer } from '@kiwicom/mobile-relay';
+
+import TripStopOver from './TripStopOver';
+import type { TimelineLegWrapper as TimelineLegWrapperType } from './__generated__/TimelineLegWrapper.graphql';
 
 type Props = {|
   +children: React.Node,
   +shouldDrawDashedLine: boolean,
   +shouldDrawSolidLine: boolean,
   +color: string,
+  +data: TimelineLegWrapperType,
 |};
 
 const lineWidth = 2;
 const circleSize = 12;
 const lineOffset = circleSize / 2 - lineWidth / 2;
 
-export default function TimelineLegWrapper({
+function TimelineLegWrapper({
   children,
   shouldDrawDashedLine,
   shouldDrawSolidLine,
   color,
+  data,
 }: Props) {
   const itemWrapperStyle = {};
 
@@ -45,7 +51,10 @@ export default function TimelineLegWrapper({
       )}
 
       <View style={[styles.itemWrapper, itemWrapperStyle]}>
-        <View style={styles.item}>{children}</View>
+        <View style={styles.item}>
+          {children}
+          {shouldDrawDashedLine === true && <TripStopOver data={data} />}
+        </View>
       </View>
       <View style={[styles.circle, { backgroundColor: color }]} />
     </View>
@@ -84,3 +93,12 @@ const styles = StyleSheet.create({
     marginBottom: 20,
   },
 });
+
+export default createFragmentContainer(
+  TimelineLegWrapper,
+  graphql`
+    fragment TimelineLegWrapper on Leg {
+      ...TripStopOver
+    }
+  `,
+);
diff --git a/app/MMB/src/scenes/tripOverview/TimelineTrip.js b/app/MMB/src/scenes/tripOverview/TimelineTrip.js
index 1a04a481..3d5ff018 100644
--- a/app/MMB/src/scenes/tripOverview/TimelineTrip.js
+++ b/app/MMB/src/scenes/tripOverview/TimelineTrip.js
@@ -37,6 +37,7 @@ function TimelineTrip(props: Props) {
               shouldDrawDashedLine={false}
               shouldDrawSolidLine={true}
               color={departureColorCode}
+              data={null} // This is not needed on this wrapper
             >
               <TimelineDeparture
                 routeStop={leg.departure}
@@ -48,6 +49,7 @@ function TimelineTrip(props: Props) {
               shouldDrawDashedLine={index + 1 !== legs.length}
               shouldDrawSolidLine={false}
               color={arrivalColorCode}
+              data={idx(legs, _ => _[index + 1]) || null} // Guarantee field is on next leg
             >
               <TimelineArrival data={leg.arrival} />
             </TimelineLegWrapper>
@@ -63,6 +65,8 @@ export default createFragmentContainer(
   graphql`
     fragment TimelineTrip on Trip {
       legs {
+        ...TimelineLegWrapper
+        guarantee
         departure {
           ...TimelineDeparture_routeStop
         }
diff --git a/app/MMB/src/scenes/tripOverview/TripStopOver.js b/app/MMB/src/scenes/tripOverview/TripStopOver.js
new file mode 100644
index 00000000..3e979979
--- /dev/null
+++ b/app/MMB/src/scenes/tripOverview/TripStopOver.js
@@ -0,0 +1,85 @@
+// @flow strict
+
+import * as React from 'react';
+import { View } from 'react-native';
+import { Translation } from '@kiwicom/mobile-localization';
+import {
+  Duration,
+  StyleSheet,
+  Touchable,
+  Text,
+  TextIcon,
+} from '@kiwicom/mobile-shared';
+import { defaultTokens } from '@kiwicom/mobile-orbit';
+import {
+  withNavigation,
+  type NavigationType,
+} from '@kiwicom/mobile-navigation';
+import { graphql, createFragmentContainer } from '@kiwicom/mobile-relay';
+import idx from 'idx';
+
+import type { TripStopOver as TripStopOverType } from './__generated__/TripStopOver.graphql';
+
+type Props = {|
+  +navigation: NavigationType,
+  +data: TripStopOverType,
+|};
+
+class TripStopOver extends React.Component<Props> {
+  onPress = () => {
+    this.props.navigation.navigate('GuaranteeScreen');
+  };
+
+  render = () => {
+    const isKiwiGuarantee =
+      idx(this.props, _ => _.data.guarantee) === 'KIWICOM';
+    return (
+      <View style={styles.container}>
+        {/* TODO: Replace hardcoded duration, need to extend graphql first */}
+        <Duration duration={250} iconStyle={styles.iconMargin} />
+
+        {isKiwiGuarantee && (
+          <View style={styles.row}>
+            <TextIcon code="h" style={[styles.icon, styles.iconMargin]} />
+            <Touchable onPress={this.onPress}>
+              <Text style={styles.buttonText}>
+                <Translation id="mmb.trip_overview.trip_stopover.kiwi_guarantee" />
+              </Text>
+            </Touchable>
+          </View>
+        )}
+      </View>
+    );
+  };
+}
+
+const styles = StyleSheet.create({
+  container: {
+    paddingTop: 20,
+    paddingBottom: 5,
+  },
+  row: {
+    flexDirection: 'row',
+    alignItems: 'center',
+  },
+  buttonText: {
+    color: defaultTokens.paletteProductNormal,
+    fontSize: 12,
+  },
+  icon: {
+    fontSize: 10,
+    color: defaultTokens.colorIconSecondary,
+  },
+  iconMargin: {
+    marginEnd: 8,
+  },
+});
+
+export default createFragmentContainer(
+  withNavigation(TripStopOver),
+  graphql`
+    fragment TripStopOver on Leg {
+      guarantee
+    }
+  `,
+);
diff --git a/app/MMB/src/scenes/tripOverview/__generated__/TimelineLegWrapper.graphql.js b/app/MMB/src/scenes/tripOverview/__generated__/TimelineLegWrapper.graphql.js
new file mode 100644
index 00000000..ac850108
--- /dev/null
+++ b/app/MMB/src/scenes/tripOverview/__generated__/TimelineLegWrapper.graphql.js
@@ -0,0 +1,37 @@
+/**
+ * @flow
+ */
+
+/* eslint-disable */
+
+'use strict';
+
+/*::
+import type { ConcreteFragment } from 'relay-runtime';
+type TripStopOver$ref = any;
+import type { FragmentReference } from "relay-runtime";
+declare export opaque type TimelineLegWrapper$ref: FragmentReference;
+export type TimelineLegWrapper = {|
+  +$fragmentRefs: TripStopOver$ref,
+  +$refType: TimelineLegWrapper$ref,
+|};
+*/
+
+
+const node/*: ConcreteFragment*/ = {
+  "kind": "Fragment",
+  "name": "TimelineLegWrapper",
+  "type": "Leg",
+  "metadata": null,
+  "argumentDefinitions": [],
+  "selections": [
+    {
+      "kind": "FragmentSpread",
+      "name": "TripStopOver",
+      "args": null
+    }
+  ]
+};
+// prettier-ignore
+(node/*: any*/).hash = 'a600684d240a41a3ab9efd92499d322a';
+module.exports = node;
diff --git a/app/MMB/src/scenes/tripOverview/__generated__/TimelineTrip.graphql.js b/app/MMB/src/scenes/tripOverview/__generated__/TimelineTrip.graphql.js
index cf984adc..8569543f 100644
--- a/app/MMB/src/scenes/tripOverview/__generated__/TimelineTrip.graphql.js
+++ b/app/MMB/src/scenes/tripOverview/__generated__/TimelineTrip.graphql.js
@@ -12,17 +12,20 @@ type TimelineArrival$ref = any;
 type TimelineDeparture_arrival$ref = any;
 type TimelineDeparture_legInfo$ref = any;
 type TimelineDeparture_routeStop$ref = any;
+type TimelineLegWrapper$ref = any;
+export type CoveredBy = "CARRIER" | "KIWICOM" | "%future added value";
 import type { FragmentReference } from "relay-runtime";
 declare export opaque type TimelineTrip$ref: FragmentReference;
 export type TimelineTrip = {|
   +legs: ?$ReadOnlyArray<?{|
+    +guarantee: ?CoveredBy,
     +departure: ?{|
       +$fragmentRefs: TimelineDeparture_routeStop$ref
     |},
     +arrival: ?{|
       +$fragmentRefs: TimelineArrival$ref & TimelineDeparture_arrival$ref
     |},
-    +$fragmentRefs: TimelineDeparture_legInfo$ref,
+    +$fragmentRefs: TimelineLegWrapper$ref & TimelineDeparture_legInfo$ref,
   |}>,
   +$refType: TimelineTrip$ref,
 |};
@@ -45,6 +48,18 @@ const node/*: ConcreteFragment*/ = {
       "concreteType": "Leg",
       "plural": true,
       "selections": [
+        {
+          "kind": "FragmentSpread",
+          "name": "TimelineLegWrapper",
+          "args": null
+        },
+        {
+          "kind": "ScalarField",
+          "alias": null,
+          "name": "guarantee",
+          "args": null,
+          "storageKey": null
+        },
         {
           "kind": "LinkedField",
           "alias": null,
@@ -92,5 +107,5 @@ const node/*: ConcreteFragment*/ = {
   ]
 };
 // prettier-ignore
-(node/*: any*/).hash = 'df429829fbb935564273c5864c21b887';
+(node/*: any*/).hash = 'd57713f20d3b3e977c39b79d0c5f9efb';
 module.exports = node;
diff --git a/app/MMB/src/scenes/tripOverview/__generated__/TripOverviewTabletQuery.graphql.js b/app/MMB/src/scenes/tripOverview/__generated__/TripOverviewTabletQuery.graphql.js
index 6194d14b..f3982ba9 100644
--- a/app/MMB/src/scenes/tripOverview/__generated__/TripOverviewTabletQuery.graphql.js
+++ b/app/MMB/src/scenes/tripOverview/__generated__/TripOverviewTabletQuery.graphql.js
@@ -1,6 +1,6 @@
 /**
  * @flow
- * @relayHash c57a2479d23df511292455ffea1c2c7f
+ * @relayHash f31dd00f934fcd75f2f7f96d0222c5a9
  */
 
 /* eslint-disable */
@@ -107,6 +107,8 @@ fragment TripTitle on Trip {
 
 fragment TimelineTrip on Trip {
   legs {
+    ...TimelineLegWrapper
+    guarantee
     departure {
       ...TimelineDeparture_routeStop
     }
@@ -119,6 +121,10 @@ fragment TimelineTrip on Trip {
   }
 }
 
+fragment TimelineLegWrapper on Leg {
+  ...TripStopOver
+}
+
 fragment TimelineDeparture_routeStop on RouteStop {
   ...TimelineTitle
   ...TimelineTerminal
@@ -171,6 +177,10 @@ fragment TimelineTitle on RouteStop {
   }
 }
 
+fragment TripStopOver on Leg {
+  guarantee
+}
+
 fragment MulticityTitle on Trip {
   departure {
     ...MulticityName
@@ -346,6 +356,13 @@ v10 = [
     "plural": true,
     "selections": [
       v2,
+      {
+        "kind": "ScalarField",
+        "alias": null,
+        "name": "guarantee",
+        "args": null,
+        "storageKey": null
+      },
       {
         "kind": "LinkedField",
         "alias": null,
@@ -445,7 +462,7 @@ return {
   "operationKind": "query",
   "name": "TripOverviewTabletQuery",
   "id": null,
-  "text": "query TripOverviewTabletQuery(\n  $id: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $id, authToken: $authToken) {\n    __typename\n    ...TripOverview\n    id\n  }\n}\n\nfragment TripOverview on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...OneWayTimeline\n  }\n  ... on BookingReturn {\n    ...ReturnTimeline\n  }\n  ... on BookingMulticity {\n    ...MulticityTimeline\n  }\n}\n\nfragment OneWayTimeline on BookingOneWay {\n  trip {\n    ...Timeline\n  }\n}\n\nfragment ReturnTimeline on BookingReturn {\n  outbound {\n    ...Timeline\n  }\n  inbound {\n    ...Timeline\n  }\n}\n\nfragment MulticityTimeline on BookingMulticity {\n  trips {\n    ...Timeline\n  }\n}\n\nfragment Timeline on Trip {\n  ...TripTitle\n  departure {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  legs {\n    id\n  }\n  ...TimelineTrip\n}\n\nfragment TripTitle on Trip {\n  ...MulticityTitle\n  duration\n}\n\nfragment TimelineTrip on Trip {\n  legs {\n    departure {\n      ...TimelineDeparture_routeStop\n    }\n    arrival {\n      ...TimelineArrival\n      ...TimelineDeparture_arrival\n    }\n    ...TimelineDeparture_legInfo\n    id\n  }\n}\n\nfragment TimelineDeparture_routeStop on RouteStop {\n  ...TimelineTitle\n  ...TimelineTerminal\n}\n\nfragment TimelineArrival on RouteStop {\n  ...TimelineTitle\n}\n\nfragment TimelineDeparture_arrival on RouteStop {\n  ...TimelineTerminal\n}\n\nfragment TimelineDeparture_legInfo on Leg {\n  flightNumber\n  operatingAirline {\n    name\n    iata\n  }\n  airline {\n    name\n    logoUrl\n    code\n  }\n  vehicle {\n    model\n    manufacturer\n  }\n}\n\nfragment TimelineTerminal on RouteStop {\n  terminal\n  airport {\n    code\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TimelineTitle on RouteStop {\n  localTime\n  airport {\n    locationId\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment MulticityTitle on Trip {\n  departure {\n    ...MulticityName\n  }\n  arrival {\n    ...MulticityName\n  }\n}\n\nfragment MulticityName on RouteStop {\n  airport {\n    city {\n      name\n    }\n    id\n  }\n}\n",
+  "text": "query TripOverviewTabletQuery(\n  $id: Int!\n  $authToken: String!\n) {\n  singleBooking(id: $id, authToken: $authToken) {\n    __typename\n    ...TripOverview\n    id\n  }\n}\n\nfragment TripOverview on BookingInterface {\n  __typename\n  ... on BookingOneWay {\n    ...OneWayTimeline\n  }\n  ... on BookingReturn {\n    ...ReturnTimeline\n  }\n  ... on BookingMulticity {\n    ...MulticityTimeline\n  }\n}\n\nfragment OneWayTimeline on BookingOneWay {\n  trip {\n    ...Timeline\n  }\n}\n\nfragment ReturnTimeline on BookingReturn {\n  outbound {\n    ...Timeline\n  }\n  inbound {\n    ...Timeline\n  }\n}\n\nfragment MulticityTimeline on BookingMulticity {\n  trips {\n    ...Timeline\n  }\n}\n\nfragment Timeline on Trip {\n  ...TripTitle\n  departure {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  arrival {\n    localTime\n    airport {\n      locationId\n      city {\n        name\n      }\n      id\n    }\n  }\n  legs {\n    id\n  }\n  ...TimelineTrip\n}\n\nfragment TripTitle on Trip {\n  ...MulticityTitle\n  duration\n}\n\nfragment TimelineTrip on Trip {\n  legs {\n    ...TimelineLegWrapper\n    guarantee\n    departure {\n      ...TimelineDeparture_routeStop\n    }\n    arrival {\n      ...TimelineArrival\n      ...TimelineDeparture_arrival\n    }\n    ...TimelineDeparture_legInfo\n    id\n  }\n}\n\nfragment TimelineLegWrapper on Leg {\n  ...TripStopOver\n}\n\nfragment TimelineDeparture_routeStop on RouteStop {\n  ...TimelineTitle\n  ...TimelineTerminal\n}\n\nfragment TimelineArrival on RouteStop {\n  ...TimelineTitle\n}\n\nfragment TimelineDeparture_arrival on RouteStop {\n  ...TimelineTerminal\n}\n\nfragment TimelineDeparture_legInfo on Leg {\n  flightNumber\n  operatingAirline {\n    name\n    iata\n  }\n  airline {\n    name\n    logoUrl\n    code\n  }\n  vehicle {\n    model\n    manufacturer\n  }\n}\n\nfragment TimelineTerminal on RouteStop {\n  terminal\n  airport {\n    code\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TimelineTitle on RouteStop {\n  localTime\n  airport {\n    locationId\n    city {\n      name\n    }\n    id\n  }\n}\n\nfragment TripStopOver on Leg {\n  guarantee\n}\n\nfragment MulticityTitle on Trip {\n  departure {\n    ...MulticityName\n  }\n  arrival {\n    ...MulticityName\n  }\n}\n\nfragment MulticityName on RouteStop {\n  airport {\n    city {\n      name\n    }\n    id\n  }\n}\n",
   "metadata": {},
   "fragment": {
     "kind": "Fragment",
diff --git a/app/MMB/src/scenes/tripOverview/__generated__/TripStopOver.graphql.js b/app/MMB/src/scenes/tripOverview/__generated__/TripStopOver.graphql.js
new file mode 100644
index 00000000..ca20538d
--- /dev/null
+++ b/app/MMB/src/scenes/tripOverview/__generated__/TripStopOver.graphql.js
@@ -0,0 +1,39 @@
+/**
+ * @flow
+ */
+
+/* eslint-disable */
+
+'use strict';
+
+/*::
+import type { ConcreteFragment } from 'relay-runtime';
+export type CoveredBy = "CARRIER" | "KIWICOM" | "%future added value";
+import type { FragmentReference } from "relay-runtime";
+declare export opaque type TripStopOver$ref: FragmentReference;
+export type TripStopOver = {|
+  +guarantee: ?CoveredBy,
+  +$refType: TripStopOver$ref,
+|};
+*/
+
+
+const node/*: ConcreteFragment*/ = {
+  "kind": "Fragment",
+  "name": "TripStopOver",
+  "type": "Leg",
+  "metadata": null,
+  "argumentDefinitions": [],
+  "selections": [
+    {
+      "kind": "ScalarField",
+      "alias": null,
+      "name": "guarantee",
+      "args": null,
+      "storageKey": null
+    }
+  ]
+};
+// prettier-ignore
+(node/*: any*/).hash = 'eb88a35a25936daf8a481e1f3a9efbb5';
+module.exports = node;
diff --git a/app/MMB/src/scenes/tripServices/insurance/insuranceOverviewScene/orderSummary/OrderSummary.js b/app/MMB/src/scenes/tripServices/insurance/insuranceOverviewScene/orderSummary/OrderSummary.js
index b9c3929f..620759c2 100644
--- a/app/MMB/src/scenes/tripServices/insurance/insuranceOverviewScene/orderSummary/OrderSummary.js
+++ b/app/MMB/src/scenes/tripServices/insurance/insuranceOverviewScene/orderSummary/OrderSummary.js
@@ -1,8 +1,14 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback } from 'react-native';
-import { StyleSheet, Text, Price, TextIcon } from '@kiwicom/mobile-shared';
+import { View } from 'react-native';
+import {
+  StyleSheet,
+  Text,
+  Price,
+  TextIcon,
+  TouchableWithoutFeedback,
+} from '@kiwicom/mobile-shared';
 import { SeparatorFullWidth } from '@kiwicom/mobile-navigation';
 import { Translation } from '@kiwicom/mobile-localization';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
diff --git a/app/MMB/src/scenes/tripServices/insurance/insuranceSelectionScene/InsuranceSelectionScene.js b/app/MMB/src/scenes/tripServices/insurance/insuranceSelectionScene/InsuranceSelectionScene.js
index 97555f5e..664fc678 100644
--- a/app/MMB/src/scenes/tripServices/insurance/insuranceSelectionScene/InsuranceSelectionScene.js
+++ b/app/MMB/src/scenes/tripServices/insurance/insuranceSelectionScene/InsuranceSelectionScene.js
@@ -1,8 +1,12 @@
 // @flow
 
 import * as React from 'react';
-import { View, Image, TouchableWithoutFeedback } from 'react-native';
-import { StyleSheet, Text } from '@kiwicom/mobile-shared';
+import { View, Image } from 'react-native';
+import {
+  StyleSheet,
+  Text,
+  TouchableWithoutFeedback,
+} from '@kiwicom/mobile-shared';
 import { Translation } from '@kiwicom/mobile-localization';
 import {
   SeparatorTrimmed,
diff --git a/app/MMB/src/scenes/tripServices/insurance/paymentScene/CardOption.js b/app/MMB/src/scenes/tripServices/insurance/paymentScene/CardOption.js
index 5c6880b3..119c3eb1 100644
--- a/app/MMB/src/scenes/tripServices/insurance/paymentScene/CardOption.js
+++ b/app/MMB/src/scenes/tripServices/insurance/paymentScene/CardOption.js
@@ -1,9 +1,14 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback, Image } from 'react-native';
+import { View, Image } from 'react-native';
 import { type TranslationType } from '@kiwicom/mobile-localization';
-import { TextIcon, StyleSheet, Text } from '@kiwicom/mobile-shared';
+import {
+  TextIcon,
+  StyleSheet,
+  Text,
+  TouchableWithoutFeedback,
+} from '@kiwicom/mobile-shared';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 
 type Props = {|
diff --git a/app/MMB/src/scenes/tripServices/insurance/paymentScene/SecurityCodeInput.js b/app/MMB/src/scenes/tripServices/insurance/paymentScene/SecurityCodeInput.js
index b3bf254a..4f601805 100644
--- a/app/MMB/src/scenes/tripServices/insurance/paymentScene/SecurityCodeInput.js
+++ b/app/MMB/src/scenes/tripServices/insurance/paymentScene/SecurityCodeInput.js
@@ -1,13 +1,14 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback } from 'react-native';
+import { View } from 'react-native';
 import { Translation, Alert } from '@kiwicom/mobile-localization';
 import {
   TextInput,
   StyleSheet,
   TextIcon,
   type StylePropType,
+  TouchableWithoutFeedback,
 } from '@kiwicom/mobile-shared';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 
diff --git a/app/MMB/src/scenes/tripServices/transportation/CurrentPositionButton.js b/app/MMB/src/scenes/tripServices/transportation/CurrentPositionButton.js
index 7d5ae4c8..db92ad24 100644
--- a/app/MMB/src/scenes/tripServices/transportation/CurrentPositionButton.js
+++ b/app/MMB/src/scenes/tripServices/transportation/CurrentPositionButton.js
@@ -1,11 +1,12 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback, Linking } from 'react-native';
+import { View, Linking } from 'react-native';
 import {
   StyleSheet,
   TextIcon,
   withGeolocationContext,
+  TouchableWithoutFeedback,
 } from '@kiwicom/mobile-shared';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 import { Alert } from '@kiwicom/mobile-localization';
diff --git a/app/MMB/src/scenes/tripServices/transportation/MarkerLocationButton.js b/app/MMB/src/scenes/tripServices/transportation/MarkerLocationButton.js
index 89083e6b..aa11c002 100644
--- a/app/MMB/src/scenes/tripServices/transportation/MarkerLocationButton.js
+++ b/app/MMB/src/scenes/tripServices/transportation/MarkerLocationButton.js
@@ -1,8 +1,13 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback } from 'react-native';
-import { Text, StyleSheet, TextIcon } from '@kiwicom/mobile-shared';
+import { View } from 'react-native';
+import {
+  Text,
+  StyleSheet,
+  TextIcon,
+  TouchableWithoutFeedback,
+} from '@kiwicom/mobile-shared';
 import { Translation } from '@kiwicom/mobile-localization';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 
diff --git a/app/hotels/src/allHotels/searchForm/LocationButton.js b/app/hotels/src/allHotels/searchForm/LocationButton.js
index 3a8f5766..6e0e0bb8 100644
--- a/app/hotels/src/allHotels/searchForm/LocationButton.js
+++ b/app/hotels/src/allHotels/searchForm/LocationButton.js
@@ -1,8 +1,13 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback } from 'react-native';
-import { Text, StyleSheet, Icon } from '@kiwicom/mobile-shared';
+import { View } from 'react-native';
+import {
+  Text,
+  StyleSheet,
+  Icon,
+  TouchableWithoutFeedback,
+} from '@kiwicom/mobile-shared';
 import { Translation } from '@kiwicom/mobile-localization';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 
diff --git a/app/hotels/src/allHotels/searchForm/guests/AgeControl.js b/app/hotels/src/allHotels/searchForm/guests/AgeControl.js
index 5a7e8ee7..66e9231b 100644
--- a/app/hotels/src/allHotels/searchForm/guests/AgeControl.js
+++ b/app/hotels/src/allHotels/searchForm/guests/AgeControl.js
@@ -1,13 +1,14 @@
 // @flow strict
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback, Platform } from 'react-native';
+import { View, Platform } from 'react-native';
 import {
   StyleSheet,
   AgePicker,
   Icon,
   Text,
   type StylePropType,
+  TouchableWithoutFeedback,
 } from '@kiwicom/mobile-shared';
 import { Translation } from '@kiwicom/mobile-localization';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
diff --git a/app/hotels/src/map/allHotels/HotelSwipeItem.js b/app/hotels/src/map/allHotels/HotelSwipeItem.js
index acb7a322..7ddd8057 100644
--- a/app/hotels/src/map/allHotels/HotelSwipeItem.js
+++ b/app/hotels/src/map/allHotels/HotelSwipeItem.js
@@ -1,9 +1,10 @@
 // @flow
 
 import * as React from 'react';
-import { TouchableWithoutFeedback, View } from 'react-native';
+import { View } from 'react-native';
 import { createFragmentContainer, graphql } from '@kiwicom/mobile-relay';
 import idx from 'idx';
+import { TouchableWithoutFeedback } from '@kiwicom/mobile-shared';
 
 import HotelDetailPreview from '../HotelDetailPreview';
 import type { HotelSwipeItem as HotelSwipeItemData } from './__generated__/HotelSwipeItem.graphql';
diff --git a/app/hotels/src/singleHotel/hotelInformation/location/Location.js b/app/hotels/src/singleHotel/hotelInformation/location/Location.js
index 7c281319..ce4648a3 100644
--- a/app/hotels/src/singleHotel/hotelInformation/location/Location.js
+++ b/app/hotels/src/singleHotel/hotelInformation/location/Location.js
@@ -1,13 +1,14 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback } from 'react-native';
+import { View } from 'react-native';
 import MapView from 'react-native-maps';
 import {
   StyleSheet,
   StretchedImage,
   DropMarker,
   Text,
+  TouchableWithoutFeedback,
 } from '@kiwicom/mobile-shared';
 import { createFragmentContainer, graphql } from '@kiwicom/mobile-relay';
 import { Translation } from '@kiwicom/mobile-localization';
diff --git a/packages/localization/src/vocabularies/ManageMyBooking.js b/packages/localization/src/vocabularies/ManageMyBooking.js
index 56a5d3bd..521db13b 100644
--- a/packages/localization/src/vocabularies/ManageMyBooking.js
+++ b/packages/localization/src/vocabularies/ManageMyBooking.js
@@ -32,6 +32,9 @@ export default {
   'mmb.alert.something_went_wrong':
     'Something went wrong; please try again later.',
 
+  // MMB Guarantee screen
+  'mmb.guarantee_screen.title': 'Help',
+
   // MMB Boarding passes
   'mmb.boarding_passes.boarding_pass': 'Boarding Pass',
   'mmb.boarding_passes.boarding_pass_return.departure': 'Departure',
@@ -460,4 +463,5 @@ export default {
   // MMB Trip overview
   'mmb.trip_overview.trip_title.outbound': 'Outbound',
   'mmb.trip_overview.trip_title.inbound': 'Inbound',
+  'mmb.trip_overview.trip_stopover.kiwi_guarantee': 'Kiwi.com Guarantee',
 };
diff --git a/packages/navigation/types/Navigation.js b/packages/navigation/types/Navigation.js
index 130fb717..012d9b75 100644
--- a/packages/navigation/types/Navigation.js
+++ b/packages/navigation/types/Navigation.js
@@ -50,7 +50,8 @@ type MMBStackNavigatorNames =
   | 'MMBHotelsStack'
   | 'MMBMainSwitchStack'
   | 'AddressPickerScreen'
-  | 'TransportationMap';
+  | 'TransportationMap'
+  | 'GuaranteeScreen';
 
 type HomepageStackNavigatorRouteNames = 'Home';
 type PlaygroundNavigationRouteNames = 'Playground';
diff --git a/packages/shared/index.js b/packages/shared/index.js
index 30bf797d..05b13663 100644
--- a/packages/shared/index.js
+++ b/packages/shared/index.js
@@ -14,6 +14,9 @@ export { default as Button } from './src/buttons/Button';
 export { default as TextButton } from './src/buttons/TextButton';
 export { default as LinkButton } from './src/buttons/LinkButton';
 export { default as ButtonTitle } from './src/buttons/ButtonTitle';
+export {
+  default as TouchableWithoutFeedback,
+} from './src/TouchableWithoutFeedback';
 export {
   default as IncrementDecrementButtons,
 } from './src/buttons/IncrementDecrementButtons';
diff --git a/packages/shared/src/Duration.js b/packages/shared/src/Duration.js
index 1c5427b2..7665fbc7 100644
--- a/packages/shared/src/Duration.js
+++ b/packages/shared/src/Duration.js
@@ -14,6 +14,7 @@ type Props = {|
   +showIcon: boolean,
   +duration: ?number,
   +style?: StylePropType,
+  +iconStyle?: StylePropType,
 |};
 
 export const separateHours = (durationInMinutes: number) => {
@@ -34,7 +35,9 @@ export default function Duration(props: Props) {
 
   return (
     <View style={styleSheet.row}>
-      {props.showIcon && <TextIcon code="e" style={styleSheet.durationText} />}
+      {props.showIcon && (
+        <TextIcon code="e" style={[styleSheet.durationText, props.iconStyle]} />
+      )}
       <Text style={[styleSheet.durationText, props.style]}>
         <Translation passThrough=" " />
         <Translation passThrough={hours} />
diff --git a/packages/shared/src/Touchable.js b/packages/shared/src/Touchable.js
index 14105d21..1b3c15ba 100644
--- a/packages/shared/src/Touchable.js
+++ b/packages/shared/src/Touchable.js
@@ -40,6 +40,8 @@ export default class Touchable extends React.Component<Props> {
     borderlessRipple: false,
     rippleColor: Color.transparent.black.$32,
     disabled: false,
+    accessibilityTraits: 'button',
+    accessibilityComponentType: 'button',
   };
 
   /**
diff --git a/packages/shared/src/TouchableWithoutFeedback.js b/packages/shared/src/TouchableWithoutFeedback.js
new file mode 100644
index 00000000..83c15143
--- /dev/null
+++ b/packages/shared/src/TouchableWithoutFeedback.js
@@ -0,0 +1,26 @@
+// @flow strict
+
+import * as React from 'react';
+import { TouchableWithoutFeedback as OriginalTouchableWithoutFeedback } from 'react-native'; // eslint-disable-line no-restricted-imports
+import type { AccessibilityProps } from '@kiwicom/mobile-accessibility';
+
+import { type StylePropType } from '../types/Styles';
+
+type Props = {|
+  +children: React.Node,
+  +onPress: () => void,
+  +disabled: boolean,
+  +style?: StylePropType,
+  +onLongPress?: () => void,
+  ...AccessibilityProps,
+|};
+
+export default function TouchableWithoutFeedback(props: Props) {
+  return <OriginalTouchableWithoutFeedback {...props} />;
+}
+
+TouchableWithoutFeedback.defaultProps = {
+  disabled: false,
+  accessibilityTraits: 'button',
+  accessibilityComponentType: 'button',
+};
diff --git a/packages/shared/src/forms/Checkbox.js b/packages/shared/src/forms/Checkbox.js
index 2ccd87d6..31eed2ac 100644
--- a/packages/shared/src/forms/Checkbox.js
+++ b/packages/shared/src/forms/Checkbox.js
@@ -1,9 +1,10 @@
 // @flow
 
 import * as React from 'react';
-import { View, TouchableWithoutFeedback, Platform } from 'react-native';
+import { View, Platform } from 'react-native';
 import { defaultTokens } from '@kiwicom/mobile-orbit';
 
+import TouchableWithoutFeedback from '../TouchableWithoutFeedback';
 import StyleSheet from '../PlatformStyleSheet';
 import Icon from '../icons/Icon';
 import type { StylePropType } from '../../types/Styles';
diff --git a/packages/shared/src/view/DismissKeyboardView.js b/packages/shared/src/view/DismissKeyboardView.js
index 4b0cafb0..5cee4534 100644
--- a/packages/shared/src/view/DismissKeyboardView.js
+++ b/packages/shared/src/view/DismissKeyboardView.js
@@ -1,8 +1,9 @@
 // @flow
 
 import * as React from 'react';
-import { TouchableWithoutFeedback, Keyboard, View } from 'react-native';
+import { Keyboard, View } from 'react-native';
 
+import TouchableWithoutFeedback from '../TouchableWithoutFeedback';
 import StyleSheet from '../PlatformStyleSheet';
 
 const styles = StyleSheet.create({


Test patch:
diff --git a/app/hotels/src/allHotels/searchForm/guests/__tests__/__snapshots__/Guests.test.js.snap b/app/hotels/src/allHotels/searchForm/guests/__tests__/__snapshots__/Guests.test.js.snap
index a4716f09..45a6c010 100644
--- a/app/hotels/src/allHotels/searchForm/guests/__tests__/__snapshots__/Guests.test.js.snap
+++ b/app/hotels/src/allHotels/searchForm/guests/__tests__/__snapshots__/Guests.test.js.snap
@@ -2,6 +2,8 @@
 
 exports[`Guests Render all inputs 1`] = `
 <Touchable
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={false}
   disabled={false}
   onPress={[MockFunction]}
diff --git a/app/hotels/src/gallery/__tests__/__snapshots__/GalleryGridTile.test.js.snap b/app/hotels/src/gallery/__tests__/__snapshots__/GalleryGridTile.test.js.snap
index 88a2eba5..9d788683 100644
--- a/app/hotels/src/gallery/__tests__/__snapshots__/GalleryGridTile.test.js.snap
+++ b/app/hotels/src/gallery/__tests__/__snapshots__/GalleryGridTile.test.js.snap
@@ -2,6 +2,8 @@
 
 exports[`renders with marginEnd if not last in the row 1`] = `
 <Touchable
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={false}
   disabled={false}
   onPress={[Function]}
@@ -28,6 +30,8 @@ exports[`renders with marginEnd if not last in the row 1`] = `
 
 exports[`renders without marginEnd if last in the row 1`] = `
 <Touchable
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={false}
   disabled={false}
   onPress={[Function]}
diff --git a/app/hotels/src/gallery/__tests__/__snapshots__/PhotosStripeHeader.test.js.snap b/app/hotels/src/gallery/__tests__/__snapshots__/PhotosStripeHeader.test.js.snap
index 8bb80fd9..e4250961 100644
--- a/app/hotels/src/gallery/__tests__/__snapshots__/PhotosStripeHeader.test.js.snap
+++ b/app/hotels/src/gallery/__tests__/__snapshots__/PhotosStripeHeader.test.js.snap
@@ -10,6 +10,8 @@ exports[`renders header with title 1`] = `
   }
 >
   <Touchable
+    accessibilityComponentType="button"
+    accessibilityTraits="button"
     borderlessRipple={false}
     disabled={false}
     onPress={[Function]}
@@ -102,6 +104,8 @@ exports[`renders header with very long title 1`] = `
   }
 >
   <Touchable
+    accessibilityComponentType="button"
+    accessibilityTraits="button"
     borderlessRipple={false}
     disabled={false}
     onPress={[Function]}
diff --git a/app/hotels/src/singleHotel/bookNow/__tests__/__snapshots__/BookNow.test.js.snap b/app/hotels/src/singleHotel/bookNow/__tests__/__snapshots__/BookNow.test.js.snap
index bb991118..69302470 100644
--- a/app/hotels/src/singleHotel/bookNow/__tests__/__snapshots__/BookNow.test.js.snap
+++ b/app/hotels/src/singleHotel/bookNow/__tests__/__snapshots__/BookNow.test.js.snap
@@ -14,6 +14,8 @@ exports[`renders without crashing 1`] = `
   }
 >
   <Touchable
+    accessibilityComponentType="button"
+    accessibilityTraits="button"
     borderlessRipple={false}
     disabled={false}
     onPress={[Function]}
diff --git a/app/hotels/src/singleHotel/roomList/__tests__/__snapshots__/RoomImage.test.js.snap b/app/hotels/src/singleHotel/roomList/__tests__/__snapshots__/RoomImage.test.js.snap
index 33b864b9..87a623fa 100644
--- a/app/hotels/src/singleHotel/roomList/__tests__/__snapshots__/RoomImage.test.js.snap
+++ b/app/hotels/src/singleHotel/roomList/__tests__/__snapshots__/RoomImage.test.js.snap
@@ -2,6 +2,8 @@
 
 exports[`RoomImage renders 1`] = `
 <Touchable
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={false}
   disabled={false}
   onPress={[MockFunction]}
diff --git a/app/hotels/src/singleHotel/roomPicker/__tests__/__snapshots__/RoomPicker.test.js.snap b/app/hotels/src/singleHotel/roomPicker/__tests__/__snapshots__/RoomPicker.test.js.snap
index ba70bc57..5419b90c 100644
--- a/app/hotels/src/singleHotel/roomPicker/__tests__/__snapshots__/RoomPicker.test.js.snap
+++ b/app/hotels/src/singleHotel/roomPicker/__tests__/__snapshots__/RoomPicker.test.js.snap
@@ -2,6 +2,8 @@
 
 exports[`renders as expected 1`] = `
 <Touchable
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={false}
   disabled={false}
   onPress={[Function]}
diff --git a/packages/shared/src/__tests__/__snapshots__/Duration.test.js.snap b/packages/shared/src/__tests__/__snapshots__/Duration.test.js.snap
index c2c35514..17615e5f 100644
--- a/packages/shared/src/__tests__/__snapshots__/Duration.test.js.snap
+++ b/packages/shared/src/__tests__/__snapshots__/Duration.test.js.snap
@@ -12,10 +12,13 @@ exports[`works with broken input 1`] = `
   <TextIcon
     code="e"
     style={
-      Object {
-        "color": "#7f91a8",
-        "fontSize": 10,
-      }
+      Array [
+        Object {
+          "color": "#7f91a8",
+          "fontSize": 10,
+        },
+        undefined,
+      ]
     }
   />
   <Text
@@ -63,10 +66,13 @@ exports[`works with broken input 2`] = `
   <TextIcon
     code="e"
     style={
-      Object {
-        "color": "#7f91a8",
-        "fontSize": 10,
-      }
+      Array [
+        Object {
+          "color": "#7f91a8",
+          "fontSize": 10,
+        },
+        undefined,
+      ]
     }
   />
   <Text
diff --git a/packages/shared/src/__tests__/__snapshots__/Touchable.ripple.test.js.snap b/packages/shared/src/__tests__/__snapshots__/Touchable.ripple.test.js.snap
index 302d8a75..304b2e65 100644
--- a/packages/shared/src/__tests__/__snapshots__/Touchable.ripple.test.js.snap
+++ b/packages/shared/src/__tests__/__snapshots__/Touchable.ripple.test.js.snap
@@ -2,6 +2,8 @@
 
 exports[`Touchable with ripple effect disables foreground in borderless mode 1`] = `
 <DummyTouchableNativeFeedback
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={true}
   disabled={false}
   onPress={[Function]}
@@ -19,6 +21,8 @@ exports[`Touchable with ripple effect disables foreground in borderless mode 1`]
 
 exports[`Touchable with ripple effect is possible to turn ripple effect off 1`] = `
 <TouchableOpacity
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   activeOpacity={0.5}
   borderlessRipple={false}
   disabled={false}
@@ -34,6 +38,8 @@ exports[`Touchable with ripple effect is possible to turn ripple effect off 1`]
 
 exports[`Touchable with ripple effect renders with foreground 1`] = `
 <DummyTouchableNativeFeedback
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={false}
   disabled={false}
   onPress={[Function]}
@@ -51,6 +57,8 @@ exports[`Touchable with ripple effect renders with foreground 1`] = `
 
 exports[`Touchable with ripple effect renders with ripple color 1`] = `
 <DummyTouchableNativeFeedback
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={false}
   disabled={false}
   onPress={[Function]}
diff --git a/packages/shared/src/__tests__/__snapshots__/Touchable.test.js.snap b/packages/shared/src/__tests__/__snapshots__/Touchable.test.js.snap
index a456219b..c0337447 100644
--- a/packages/shared/src/__tests__/__snapshots__/Touchable.test.js.snap
+++ b/packages/shared/src/__tests__/__snapshots__/Touchable.test.js.snap
@@ -2,6 +2,8 @@
 
 exports[`Touchable with children throws error for multiple children 1`] = `
 <TouchableOpacity
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   activeOpacity={0.5}
   borderlessRipple={false}
   disabled={false}
@@ -16,6 +18,8 @@ exports[`Touchable with children throws error for multiple children 1`] = `
 
 exports[`Touchable with children throws error for multiple children 2`] = `
 <TouchableOpacity
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
   activeOpacity={0.5}
   borderlessRipple={false}
   disabled={false}
diff --git a/packages/shared/src/buttons/__tests__/__snapshots__/Button.test.js.snap b/packages/shared/src/buttons/__tests__/__snapshots__/Button.test.js.snap
index 5a4bb26b..e8bae307 100644
--- a/packages/shared/src/buttons/__tests__/__snapshots__/Button.test.js.snap
+++ b/packages/shared/src/buttons/__tests__/__snapshots__/Button.test.js.snap
@@ -3,6 +3,7 @@
 exports[`Button renders 1`] = `
 <Touchable
   accessibilityComponentType="button"
+  accessibilityTraits="button"
   borderlessRipple={false}
   disabled={false}
   onPress={[Function]}
diff --git a/packages/shared/src/forms/__tests__/__snapshots__/Checkbox.test.js.snap b/packages/shared/src/forms/__tests__/__snapshots__/Checkbox.test.js.snap
index cb41f2cc..00e9c24c 100644
--- a/packages/shared/src/forms/__tests__/__snapshots__/Checkbox.test.js.snap
+++ b/packages/shared/src/forms/__tests__/__snapshots__/Checkbox.test.js.snap
@@ -2,6 +2,9 @@
 
 exports[`checked 1`] = `
 <TouchableWithoutFeedback
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
+  disabled={false}
   onPress={[Function]}
 >
   <Component
@@ -50,6 +53,9 @@ exports[`checked 1`] = `
 
 exports[`not checked 1`] = `
 <TouchableWithoutFeedback
+  accessibilityComponentType="button"
+  accessibilityTraits="button"
+  disabled={false}
   onPress={[Function]}
 >
   <Component