diff --git a/packages/mdc-list/README.md b/packages/mdc-list/README.md index 562ba41aa39..e2451516929 100644 --- a/packages/mdc-list/README.md +++ b/packages/mdc-list/README.md @@ -138,6 +138,7 @@ OR ``` ### CSS Classes + CSS Class | Description --- | --- `mdc-list` | Mandatory, for the list element @@ -168,6 +169,7 @@ CSS Class | Description * *Activated* state is more permanent than selected state, and will **NOT** change soon relative to the lifetime of the page. ### Sass Mixins + Mixin | Description --- | --- `mdc-list-item-primary-text-ink-color($color)` | Sets the ink color of the primary text of the list item diff --git a/packages/mdc-textfield/README.md b/packages/mdc-textfield/README.md index 80eb4c69479..b14551c8197 100644 --- a/packages/mdc-textfield/README.md +++ b/packages/mdc-textfield/README.md @@ -232,6 +232,7 @@ Mixin | Description `mdc-text-field-fullwidth-bottom-line-color($color)` | Customizes the fullwidth text field variant bottom line color. #### Other Mixins + Mixin | Description --- | --- `mdc-text-field-bottom-line-color($color)` | Customizes the text field bottom line color except the outlined and textarea variants. diff --git a/test/screenshot/lib/cbt-user-agent.js b/test/screenshot/lib/cbt-user-agent.js index 8bcfe6c45e2..1c153684c90 100644 --- a/test/screenshot/lib/cbt-user-agent.js +++ b/test/screenshot/lib/cbt-user-agent.js @@ -67,7 +67,7 @@ const CBT_FILTERS = { }, }; -let userAgentsPromise; +let allUserAgentsPromise; module.exports = { fetchBrowsersToRun, @@ -76,15 +76,15 @@ module.exports = { }; /** - * Resolves aliases in `browser.json` and returns their corresponding CBT API representations. - * @param {!Array=} aliases + * Resolves all aliases in `browser.json` and returns their corresponding CBT API representations. * @return {!Promise>} */ -async function fetchBrowsersToRun(aliases = getFilteredAliases()) { - return userAgentsPromise || (userAgentsPromise = new Promise((resolve, reject) => { +async function fetchBrowsersToRun() { + return allUserAgentsPromise || (allUserAgentsPromise = new Promise((resolve, reject) => { cbtApi.fetchAvailableDevices() .then( (cbtDevices) => { + const aliases = getFilteredAliases(); const userAgents = findAllMatchingUAs(aliases, cbtDevices); console.log(userAgents.map((config) => `${config.alias}: ${config.fullCbtApiName}`)); console.log('\n'); @@ -117,7 +117,10 @@ async function fetchBrowserByApiName(cbtDeviceApiName, cbtBrowserApiName) { * @return {!Promise} */ async function fetchBrowserByAlias(userAgentAlias) { - return (await fetchBrowsersToRun([userAgentAlias]))[0]; + const userAgents = await fetchBrowsersToRun(); + return userAgents.find((userAgent) => { + return userAgent.alias === userAgentAlias; + }); } /** diff --git a/test/screenshot/lib/storage.js b/test/screenshot/lib/storage.js index 93011278503..83064f328e2 100644 --- a/test/screenshot/lib/storage.js +++ b/test/screenshot/lib/storage.js @@ -90,6 +90,17 @@ class Storage { const cloudFile = this.storageBucket_.file(gcsAbsoluteFilePath); + const [cloudFileExists] = await cloudFile.exists(); + + if (cloudFileExists) { + console.warn([ + `WARNING: GCS file ${queuePosition} already exists - ${gcsAbsoluteFilePath}`, + 'This is a bug in the screenshot testing logic. Tell acdvorak to fix it.', + 'The file will NOT be overwritten. Continuing.', + ].join('\n')); + return this.handleUploadSuccess_(uploadableFile); + } + const uploadPromise = new Promise(((resolve, reject) => { console.log(`➡ Uploading file ${queuePosition} - ${gcsAbsoluteFilePath}`);