results-collection
results-collection copied to clipboard
Record Safari Technology Preview version
The raw report for the latest run has "browser_version": "12.1"
. This is also what shows up on wpt.fyi.
In the UI a much more detailed version string ("Release 65 (Safari 12.1, WebKit 13607.1.5.2)") is available:
Knowing the release number (65) and when it changes is important for comparing results over time.
Unfortunately, /usr/libexec/PlistBuddy -c Print /Applications/Safari\ Technology\ Preview.app/Contents/Info.plist
doesn't include the "65", but it does include "13607.1.5.2" as CFBundleVersion.
Dict { CFBundleURLTypes = Array { Dict { CFBundleURLName = Web site URL CFBundleURLSchemes = Array { http https } LSIsAppleDefaultForScheme = false LSHandlerRank = Alternate } Dict { CFBundleURLName = Local file URL CFBundleURLSchemes = Array { file } LSHandlerRank = Alternate } } NSAppleScriptEnabled = Yes CFBundleInfoDictionaryVersion = 6.0 DTPlatformVersion = GM CFBundleIconFile = technology-preview-compass CFBundleName = Safari Technology Preview DTSDKName = macosx10.13internal NSUserActivityTypes = Array { NSUserActivityTypeBrowsingWeb } NSServices = Array { Dict { NSMenuItem = Dict { default = Search With %WebSearchProvider@ } NSSendTypes = Array { public.utf8-plain-text } NSPortName = Safari NSMessage = searchWithWebSearchProvider NSKeyEquivalent = Dict { default = L } } Dict { NSMenuItem = Dict { default = Add to Reading List } NSRequiredContext = Array { Dict { NSTextContent = URL } Dict { NSLinkSchemes = Array { http https } } } NSSendTypes = Array { public.rtf public.utf8-plain-text } NSPortName = Safari NSMessage = addToReadingList } } NSPrincipalClass = BrowserApplication LSApplicationCategoryType = public.app-category.productivity CFBundleDocumentTypes = Array { Dict { CFBundleTypeExtensions = Array { css } CFBundleTypeMIMETypes = Array { text/css } NSDocumentClass = BrowserDocument CFBundleTypeName = CSS style sheet CFBundleTypeIconFile = css.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { pdf } CFBundleTypeMIMETypes = Array { application/pdf } NSDocumentClass = BrowserDocument CFBundleTypeName = PDF document CFBundleTypeIconFile = pdf.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { webarchive } CFBundleTypeMIMETypes = Array { application/x-webarchive } LSHandlerRank = Alternate LSIsAppleDefaultForType = true NSDocumentClass = BrowserDocument CFBundleTypeName = Web archive CFBundleTypeIconFile = webarchive.icns CFBundleTypeRole = Viewer ICExtension = ARCHIVE } Dict { CFBundleTypeExtensions = Array { webbookmark } NSDocumentClass = BrowserDocument CFBundleTypeName = Safari bookmark CFBundleTypeIconFile = webbookmark.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { webhistory } NSDocumentClass = BrowserDocument CFBundleTypeName = Safari history item CFBundleTypeIconFile = webhistory.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { webloc } CFBundleTypeOSTypes = Array { ilht } NSDocumentClass = BrowserDocument CFBundleTypeName = Web internet location CFBundleTypeIconFile = webloc.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { download } LSTypeIsPackage = true NSDocumentClass = BrowserDocument CFBundleTypeName = Safari download CFBundleTypeIconFile = download10.icns CFBundleTypeRole = Editor LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { safariextz } CFBundleTypeMIMETypes = Array { application/x-safari-extension } LSTypeIsPackage = false NSDocumentClass = BrowserDocument CFBundleTypeName = Safari extension CFBundleTypeIconFile = safariextz.icns CFBundleTypeRole = Viewer LSHandlerRank = Owner } Dict { CFBundleTypeExtensions = Array { gif } CFBundleTypeMIMETypes = Array { image/gif } CFBundleTypeOSTypes = Array { GIFf } NSDocumentClass = BrowserDocument CFBundleTypeName = GIF image CFBundleTypeIconFile = gif.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { html htm shtml jhtml } CFBundleTypeMIMETypes = Array { text/html } CFBundleTypeOSTypes = Array { HTML } LSHandlerRank = Alternate LSIsAppleDefaultForType = true CFBundleTypeName = HTML document NSDocumentClass = BrowserDocument CFBundleTypeIconFile = html.icns CFBundleTypeRole = Viewer ICExtension = HTML } Dict { CFBundleTypeExtensions = Array { js } CFBundleTypeMIMETypes = Array { application/x-javascript } NSDocumentClass = BrowserDocument CFBundleTypeName = JavaScript script CFBundleTypeIconFile = js.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { jpg jpeg } CFBundleTypeMIMETypes = Array { image/jpeg } CFBundleTypeOSTypes = Array { JPEG } LSHandlerRank = Alternate NSDocumentClass = BrowserDocument CFBundleTypeName = JPEG image CFBundleTypeIconFile = jpeg.icns CFBundleTypeRole = Viewer ICExtension = JPEG } Dict { CFBundleTypeExtensions = Array { jp2 } CFBundleTypeMIMETypes = Array { image/jp2 } CFBundleTypeOSTypes = Array { jp2 } NSDocumentClass = BrowserDocument CFBundleTypeName = JPEG 2000 image CFBundleTypeIconFile = jp2.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { txt text } CFBundleTypeMIMETypes = Array { text/plain } CFBundleTypeOSTypes = Array { TEXT } LSHandlerRank = Alternate NSDocumentClass = BrowserDocument CFBundleTypeName = Plain text document CFBundleTypeIconFile = txt.icns CFBundleTypeRole = Viewer ICExtension = TXT } Dict { CFBundleTypeExtensions = Array { png } CFBundleTypeMIMETypes = Array { image/png } CFBundleTypeOSTypes = Array { PNGf } NSDocumentClass = BrowserDocument CFBundleTypeName = PNG image CFBundleTypeIconFile = png.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { tiff tif } CFBundleTypeMIMETypes = Array { image/tiff } CFBundleTypeOSTypes = Array { TIFF } LSHandlerRank = Alternate NSDocumentClass = BrowserDocument CFBundleTypeName = TIFF image CFBundleTypeIconFile = tiff.icns CFBundleTypeRole = Viewer ICExtension = TIFF } Dict { CFBundleTypeExtensions = Array { url } CFBundleTypeOSTypes = Array { LINK } LSIsAppleDefaultForType = true NSDocumentClass = BrowserDocument CFBundleTypeName = Web site location CFBundleTypeIconFile = url.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { ico } CFBundleTypeMIMETypes = Array { image/x-icon } CFBundleTypeOSTypes = Array { ICO } NSDocumentClass = BrowserDocument CFBundleTypeName = Windows icon image CFBundleTypeIconFile = ico.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } Dict { CFBundleTypeExtensions = Array { xhtml xht xhtm xht } CFBundleTypeMIMETypes = Array { application/xhtml+xml } LSHandlerRank = Alternate NSDocumentClass = BrowserDocument CFBundleTypeName = XHTML document CFBundleTypeIconFile = xhtml.icns CFBundleTypeRole = Viewer ICExtension = XHTML } Dict { CFBundleTypeExtensions = Array { xml xbl xsl xslt } CFBundleTypeMIMETypes = Array { application/xml text/xml } LSHandlerRank = Alternate NSDocumentClass = BrowserDocument CFBundleTypeName = XML document CFBundleTypeIconFile = xml.icns CFBundleTypeRole = Viewer ICExtension = XML } Dict { CFBundleTypeExtensions = Array { svg } CFBundleTypeMIMETypes = Array { image/svg+xml } NSDocumentClass = BrowserDocument CFBundleTypeName = SVG document CFBundleTypeIconFile = svg.icns CFBundleTypeRole = Viewer LSHandlerRank = Alternate } } DTSDKBuild = 17A364 CFBundleShortVersionString = 12.1 CFBundleSupportedPlatforms = Array { MacOSX } BuildMachineOSBuild = 16B2657 DTPlatformBuild = 9L95g CFBundlePackageType = APPL DTXcodeBuild = 9L95g CFBundleDevelopmentRegion = English UTExportedTypeDeclarations = Array { Dict { UTTypeConformsTo = Array { public.data } UTTypeIdentifier = com.apple.safari.bookmark UTTypeDescription = Safari bookmark UTTypeTagSpecification = Dict { public.filename-extension = Array { webbookmark } } } Dict { UTTypeConformsTo = Array { public.data } UTTypeIdentifier = com.apple.safari.extension UTTypeDescription = Safari extension UTTypeTagSpecification = Dict { public.filename-extension = Array { safariextz } } } Dict { UTTypeConformsTo = Array { public.data } UTTypeIdentifier = com.apple.safari.history UTTypeDescription = Safari history item UTTypeTagSpecification = Dict { public.filename-extension = Array { webhistory } } } } CFBundleVersion = 13607.1.5.2 CFBundleGetInfoString = 12.1, Copyright © 2003-2018 Apple Inc. NSSupportsSuddenTermination = true LSFileQuarantineEnabled = true NSSupportsAutomaticTermination = true OSAScriptingDefinition = Safari.sdef NSMainNibFile = MainMenu CFBundleIdentifier = com.apple.SafariTechnologyPreview HPDHelpProjectIdentifier = safari DTXcode = 0900 CFBundleHelpBookName = com.apple.Safari.help CFBundleHelpBookFolder = Safari.help Application-Group = Array { dot-mac InternetAccounts } CFBundleExecutable = Safari Technology Preview NSLocationUsageDescription = Websites you visit may request your location. LSMinimumSystemVersion = 10.13.0 CFBundleSignature = stp1 DTCompiler = com.apple.compilers.llvm.clang.1_0 }
P.S. This issue is similar to https://github.com/web-platform-tests/wpt/issues/13052 and https://github.com/web-platform-tests/wpt/issues/13399, and the solution may be in wpt itself, but also perhaps not given that much of the Safari-specific setup is in this repo.
Another failed attempt:
/Applications/Safari\ Technology\ Preview.app/Contents/MacOS/safaridriver -p 9999
curl -d '{ "capabilities": {} }' http://localhost:9999/session
{"value":{"sessionId":"78FFD008-96EB-4C4E-B6B9-0BB7AA732F85","capabilities":{"browserVersion":"12.1","platformName":"macOS","acceptInsecureCerts":false,"setWindowRect":true,"browserName":"Safari Technology Preview"}}}
@burg, how would you advise people to get the STP release number if it wasn't installed from a known dmg? (Which I am currently doing, I believe @jugglinmike has told you that safaridriver doesn't work in STP 66, hence the 65 in this issue.)
@burg https://bugreport.apple.com/web/?problemID=43691655 is filed on the inability to get the STP release number programmatically FWIW
Safari Technology Preview 67 and later has added the --version flag to safaridriver. Let me know if that doesn't solve your needs.
Wonderful, thanks @burg!
I don't see 67 on https://developer.apple.com/safari/download/ yet, do you know when it will be released, @burg? Thanks!
You could also check the WebKit blog. Looks like version 67 hasn't been announced yet.
Also, Brian: the ATOM feed and the RSS feed are both out of date (they list the announcement of STP 62 as the latest post).
It's here: https://webkit.org/blog/8419/release-notes-for-safari-technology-preview-67/
I've sent https://github.com/Homebrew/homebrew-cask-versions/pull/6387 for my own use, and verified that safaridriver --version
outputs this:
Included with Safari Technology Preview (Release 67, 13607.1.9.0.1)
@burg, do you also know what that string will be in Safari stable? I'm asking because I'm updating ./wpt run
to extract the string and would like to be proactive.
Example:
bburg$ safaridriver --version Included with Safari 12.1 (14607.1.11)
The version string has been explicitly designed to be regex parsable. Let me know if you think this is problematic; I've used it internally with pytest to write Safari Technology Preview-specific tests.
Thanks @burg! https://github.com/web-platform-tests/wpt/pull/13467 is where I'm writing the code to parse it, although I haven't finished it.
BTW, 12.1 doesn't show up in the string for STP, but it is the version that PlistBuddy will report. Do you consider part of the version, or just an internal detail?
12.1 is also in the UI screenshot I posted.
Safari Technology Preview's Info.plist will list the next anticipated Safari release version, to signal that it is not Safari 12 (in this case). However I omit that from the version output as we typically don't reference that version string for Safari Technology Preview. There is no other programmatic way to determine the STP release from the Safari Technology Preview app.
Thanks for the explanation, then so think just stripping "Included with " in both cases to get "Safari Technology Preview (Release 67, 13607.1.9.0.1)" and "Safari 12.1 (14607.1.11)" is fine.
@jugglinmike, would you know why 12.1 shows up as the version for STP on wpt.fyi now? Did you use PlistBuddy?
@lukebjerring, will we need to adapt the wpt.fyi frontend to this as well? And can we change the version information retroactively to not have 12.1 ever match STP?
When running Safari locally, the system infers the version based on files that are "near" the executable under test. The heuristic is implemented and explained in the read-browser-version.py
script. Relevant comment:
# The Safari binary cannot be queried for this information. Because it may
# only be installed at the system level, this function operates on
# assumptions regarding files that are present relative to the binary.
# The XML-formatted `version.plist` file contains key/value pairs in the
# following structure:
#
# <plist version="1.0">
# <dict>
# <key>EXAMPLE KEY</key>
# <string>EXAMPLE VALUE</string>
# </dict>
# </plist>
#
# See:
# https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html#//apple_ref/doc/uid/TP40009254-SW1
You might say we're our own PlistBuddy
Aha, well that explains it at least. And means that when wpt can get the version from safaridriver --version
, that some tweaks around this to not override will also be needed.
@jugglinmike, do you know which exact STP versions have been used for which runs, so we could retroactively edit the version info?
We've tested the latest version for almost every collection. The exception is we tested STP 65 until STP 67 was released because version 66 could not be automated. Relevant data is available in the build logs, so I can verify programtically when/if that's desirable.
Great, thank you! @lukebjerring, do you think we should just edit the version information in wpt.fyi's datastore, or will something bad happen if the information is out of sync with the reports? We could just leave it, but downside is that product=safari-12
can match the wrong thing for some shas, which is a problem I actually ran into.
Yes; I'll defer to @Hexcles for a batch-update of mapping the (incorrect) data