test.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. var test = require('tape')
  2. var isMobile = require('./')
  3. var iphone =
  4. 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3'
  5. var chrome =
  6. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36'
  7. var ffos = 'Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0'
  8. var ipad =
  9. 'Mozilla/5.0 (iPad; CPU OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13F69 Safari/601.1'
  10. var ios13ipad =
  11. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
  12. var ios13ipadpro =
  13. 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15'
  14. test('is mobile', function (t) {
  15. t.ok(isMobile({ ua: iphone }))
  16. t.ok(isMobile({ ua: ffos }))
  17. t.notOk(isMobile({ ua: ipad }))
  18. t.ok(isMobile({ ua: ipad, tablet: true }))
  19. t.ok(isMobile({ ua: { headers: { 'user-agent': iphone } } }))
  20. t.notOk(isMobile({ ua: chrome }))
  21. t.notOk(isMobile({ ua: { headers: { 'user-agent': chrome } } }))
  22. t.notOk(isMobile())
  23. t.notOk(isMobile({ ua: { headers: null } }))
  24. t.notOk(isMobile({ ua: { headers: { 'user-agent': null } } }))
  25. global.navigator = {}
  26. global.navigator.userAgent = iphone
  27. t.ok(isMobile())
  28. t.ok(isMobile({ tablet: true }))
  29. global.navigator.userAgent = chrome
  30. t.notOk(isMobile())
  31. t.notOk(isMobile({ tablet: true }))
  32. global.navigator.userAgent = ipad
  33. t.notOk(isMobile())
  34. t.ok(isMobile({ tablet: true }))
  35. global.navigator = { maxTouchPoints: 5 }
  36. t.ok(isMobile({ ua: ios13ipad, tablet: true, featureDetect: true }))
  37. t.ok(isMobile({ ua: ios13ipadpro, tablet: true, featureDetect: true }))
  38. t.end()
  39. })