diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12995229f..3af3790f7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,8 +3,8 @@ on: push: branches: - master - - hotfix/* - - release/* + - hotfix/** + - release/** pull_request: branches: - master @@ -196,27 +196,6 @@ jobs: shell: bash env: NODE_TLS_REJECT_UNAUTHORIZED: 0 - endtoendpuppeteer: - name: "End to end puppeteer tests" - needs: [lint, format, compile, unittest] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Use Node.js 12.x - uses: actions/setup-node@v1 - with: - node-version: 12.x - - name: End to End Puppeteer Tests - run: | - npm ci - npm start & - npm run wait-for-server - npm run test:e2e - shell: bash - env: - NODE_TLS_REJECT_UNAUTHORIZED: 0 - PORTAL_RUNNER_CONNECTION_STRING: ${{ secrets.CONNECTION_STRING_SQL }} - CASSANDRA_CONNECTION_STRING: ${{ secrets.CONNECTION_STRING_CASSANDRA }} nuget: name: Publish Nuget if: github.ref == 'refs/heads/master' || contains(github.ref, 'hotfix/') || contains(github.ref, 'release/') diff --git a/src/Common/MessageHandler.ts b/src/Common/MessageHandler.ts index 31317800a..1932739e9 100644 --- a/src/Common/MessageHandler.ts +++ b/src/Common/MessageHandler.ts @@ -49,16 +49,15 @@ export function sendCachedDataMessage( export function sendMessage(data: any): void { if (canSendMessage()) { - const dataExplorerWindow = getDataExplorerWindow(window); - if (dataExplorerWindow) { - dataExplorerWindow.parent.postMessage( - { - signature: "pcIframe", - data: data - }, - dataExplorerWindow.document.referrer - ); - } + // We try to find data explorer window first, then fallback to current window + const portalChildWindow = getDataExplorerWindow(window) || window; + portalChildWindow.parent.postMessage( + { + signature: "pcIframe", + data: data + }, + portalChildWindow.document.referrer + ); } } diff --git a/src/Utils/WindowUtils.ts b/src/Utils/WindowUtils.ts index e672f288c..909cc9a3f 100644 --- a/src/Utils/WindowUtils.ts +++ b/src/Utils/WindowUtils.ts @@ -2,15 +2,21 @@ export const getDataExplorerWindow = (currentWindow: Window): Window | undefined // Start with the current window and traverse up the parent hierarchy to find a window // with `dataExplorerPlatform` property let dataExplorerWindow: Window | undefined = currentWindow; - // TODO: Need to `any` here since the window imports Explorer which can't be in strict mode yet - // eslint-disable-next-line @typescript-eslint/no-explicit-any - while (dataExplorerWindow && (dataExplorerWindow as any).dataExplorerPlatform === undefined) { - // If a window does not have a parent, its parent property is a reference to itself. - if (dataExplorerWindow.parent === dataExplorerWindow) { - dataExplorerWindow = undefined; - } else { - dataExplorerWindow = dataExplorerWindow.parent; + + try { + // TODO: Need to `any` here since the window imports Explorer which can't be in strict mode yet + // eslint-disable-next-line @typescript-eslint/no-explicit-any + while (dataExplorerWindow && (dataExplorerWindow as any).dataExplorerPlatform === undefined) { + // If a window does not have a parent, its parent property is a reference to itself. + if (dataExplorerWindow.parent === dataExplorerWindow) { + dataExplorerWindow = undefined; + } else { + dataExplorerWindow = dataExplorerWindow.parent; + } } + } catch (error) { + // This can happen if we come across parent from a different origin + dataExplorerWindow = undefined; } return dataExplorerWindow;