diff --git a/packages/driver/cypress/e2e/webkit.cy.ts b/packages/driver/cypress/e2e/webkit.cy.ts new file mode 100644 index 000000000000..36da5ab9c4d5 --- /dev/null +++ b/packages/driver/cypress/e2e/webkit.cy.ts @@ -0,0 +1,31 @@ +describe('WebKit-specific behavior', { browser: 'webkit' }, () => { + it('cy.origin() is disabled', (done) => { + cy.on('fail', (err) => { + expect(err.message).to.equal('`cy.origin()` is not currently supported in experimental WebKit.') + expect(err.docsUrl).to.equal('https://on.cypress.io/webkit-experiment') + done() + }) + + cy.origin('foo', () => {}) + }) + + it('cy.session() is disabled', (done) => { + cy.on('fail', (err) => { + expect(err.message).to.equal('`cy.session()` is not currently supported in experimental WebKit.') + expect(err.docsUrl).to.equal('https://on.cypress.io/webkit-experiment') + done() + }) + + cy.session('foo', () => {}) + }) + + it('cy.session() is disabled', (done) => { + cy.on('fail', (err) => { + expect(err.message).to.include('`forceNetworkError` was passed, but it is not currently supported in experimental WebKit.') + expect(err.docsUrl).to.equal('https://on.cypress.io/intercept') + done() + }) + + cy.intercept('http://foo.com', { forceNetworkError: true }) + }) +}) diff --git a/packages/driver/src/cy/commands/origin/index.ts b/packages/driver/src/cy/commands/origin/index.ts index 249ea7151118..c1dc1d350dcf 100644 --- a/packages/driver/src/cy/commands/origin/index.ts +++ b/packages/driver/src/cy/commands/origin/index.ts @@ -54,6 +54,10 @@ export default (Commands, Cypress: Cypress.Cypress, cy: Cypress.cy, state: State Commands.addAll({ origin (urlOrDomain: string, optionsOrFn: { args: T } | (() => {}), fn?: (args?: T) => {}) { + if (Cypress.isBrowser('webkit')) { + return $errUtils.throwErrByPath('webkit.origin') + } + const userInvocationStack = state('current').get('userInvocationStack') // store the invocation stack in the case that `cy.origin` errors diff --git a/packages/driver/src/cy/commands/sessions/index.ts b/packages/driver/src/cy/commands/sessions/index.ts index 17ecd772a5b7..d045eb0b7720 100644 --- a/packages/driver/src/cy/commands/sessions/index.ts +++ b/packages/driver/src/cy/commands/sessions/index.ts @@ -53,6 +53,10 @@ export default function (Commands, Cypress, cy) { Commands.addAll({ session (id, setup?: Function, options: { validate?: Function } = {}) { + if (Cypress.isBrowser('webkit')) { + return $errUtils.throwErrByPath('webkit.session') + } + throwIfNoSessionSupport() if (!id || !_.isString(id) && !_.isObject(id)) { diff --git a/packages/driver/src/cy/net-stubbing/static-response-utils.ts b/packages/driver/src/cy/net-stubbing/static-response-utils.ts index 962c07bb559b..6f0d2cdae7a4 100644 --- a/packages/driver/src/cy/net-stubbing/static-response-utils.ts +++ b/packages/driver/src/cy/net-stubbing/static-response-utils.ts @@ -24,6 +24,10 @@ export function validateStaticResponse (cmd: string, staticResponse: StaticRespo err('`forceNetworkError`, if passed, must be the only option in the StaticResponse.') } + if (forceNetworkError && Cypress.isBrowser('webkit')) { + err('`forceNetworkError` was passed, but it is not currently supported in experimental WebKit.') + } + if (body && fixture) { err('`body` and `fixture` cannot both be set, pick one.') } diff --git a/packages/driver/src/cypress/error_messages.ts b/packages/driver/src/cypress/error_messages.ts index a8bb7269b7ef..7602034fde8f 100644 --- a/packages/driver/src/cypress/error_messages.ts +++ b/packages/driver/src/cypress/error_messages.ts @@ -2297,6 +2297,12 @@ export default { }, }, + webkit: { + docsUrl: 'https://on.cypress.io/webkit-experiment', + origin: '`cy.origin()` is not currently supported in experimental WebKit.', + session: '`cy.session()` is not currently supported in experimental WebKit.', + }, + window: { iframe_doc_undefined: 'The remote iframe\'s document is `undefined`', iframe_undefined: 'The remote iframe is `undefined`',