
FAIL canShare with no arguments (same as empty dictionary) navigator.canShare is not a function. (In 'navigator.canShare()', 'navigator.canShare' is undefined)
FAIL canShare with an empty dictionary navigator.canShare is not a function. (In 'navigator.canShare({})', 'navigator.canShare' is undefined)
FAIL canShare with a undefined argument (same as empty dictionary) navigator.canShare is not a function. (In 'navigator.canShare(undefined)', 'navigator.canShare' is undefined)
FAIL canShare with a null argument (same as empty dictionary) navigator.canShare is not a function. (In 'navigator.canShare(null)', 'navigator.canShare' is undefined)
FAIL canShare with a dictionary containing only surplus fields navigator.canShare is not a function. (In 'navigator.canShare({unused: 'unexpected field'})', 'navigator.canShare' is undefined)
FAIL canShare with an invalid URL navigator.canShare is not a function. (In 'navigator.canShare({url})', 'navigator.canShare' is undefined)
FAIL canShare with attribute undefined is equivalent to omitting the attribute navigator.canShare is not a function. (In 'navigator.canShare({title: undefined})', 'navigator.canShare' is undefined)
FAIL canShare with title navigator.canShare is not a function. (In 'navigator.canShare({title: 'subject'})', 'navigator.canShare' is undefined)
FAIL canShare with text navigator.canShare is not a function. (In 'navigator.canShare({text: 'body'})', 'navigator.canShare' is undefined)
FAIL canShare with URL navigator.canShare is not a function. (In 'navigator.canShare({url: 'https://www.example.com/some/path?some_query#some_fragment'})', 'navigator.canShare' is undefined)
FAIL canShare with null attribute navigator.canShare is not a function. (In 'navigator.canShare({title: null})', 'navigator.canShare' is undefined)
FAIL canShare with number navigator.canShare is not a function. (In 'navigator.canShare({text: 123})', 'navigator.canShare' is undefined)
FAIL canShare with object navigator.canShare is not a function. (In 'navigator.canShare({url: {toString() { return 'https://example.com/'; }}})', 'navigator.canShare' is undefined)
FAIL canShare with unexpected field navigator.canShare is not a function. (In 'navigator.canShare({title: 'subject', text: 'body', url: 'https://example.com/', unused: 'unexpected field'})', 'navigator.canShare' is undefined)
FAIL canShare with data URL navigator.canShare is not a function. (In 'navigator.canShare({url: 'data:the url'})', 'navigator.canShare' is undefined)
FAIL canShare with empty URL navigator.canShare is not a function. (In 'navigator.canShare({url: ''})', 'navigator.canShare' is undefined)
FAIL canShare with URL having no scheme navigator.canShare is not a function. (In 'navigator.canShare({url: '//www.example.com/some/path?some_query#some_fragment'})', 'navigator.canShare' is undefined)

