Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't login by Goggle accounts connect or by Google auth API in Cypress 10x #23773

Closed
idanElitzur opened this issue Sep 11, 2022 · 1 comment
Closed
Labels
type: duplicate This issue or pull request already exists

Comments

@idanElitzur
Copy link

idanElitzur commented Sep 11, 2022

Current behavior

I've tried to connect to Google account when my tested application redirects to Google accounts connect for let the end-user send emails by the application but I'm not able to do it not by Google Auth API according to your guidelines:
https://docs.cypress.io/guides/end-to-end-testing/google-authentication#Custom-Command-for-Google-Authentication
and not by cy.origin() from the UI.

In the first attempt by the API it's ignore of these authentication and popup the dialog to connect by google account as usually even all the credentials and token are valid and return 200 ok.

In the second attempt by cy.origin() it's keep to load the page after the redirect and always reach to timeout and yell about to increase the timeout even the page seems like it was fully loaded after a few seconds.
I've tried to increase the timeout to 90 seconds and use wait() before and after the redirect and look for some hidden iframes and tried every versa of google domain but nothing help.
it always return errors over there.

all the examples are below.

This is the error when trying to use cy.origin()::

Timed out after waiting 30000ms for your remote page to load on origin(s):

- https://google.com

A cross-origin request for https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=https%3A%2F%2Fmail.google.com&include_granted_scopes=true&state=%7B%22redirectUri%22%3A%22https%3A%2F%2Fmyappurl.com%2Fapp%2Fpipeline%2F9some-token-here-b96b599154ac%3Ftab%3Doverview%22%2C%22clientToken%22%3A%mytokenishere-1234567890%22%7D&prompt=consent&response_type=code&client_id=1234567890-aehhht36f7a01d38bmsvvpjrh915i86v.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fmyredreictedappurl.com%2FusersManagerSrvGoogleLogin was detected.

A command that triggers cross-origin navigation must be immediately followed by a cy.origin() command:

cy.origin('https://google.com', () => {
  <commands targeting https://accounts.google.com go here>
})

If the cross-origin request was an intermediary state, you can try increasing the pageLoadTimeout value in Users/myname/repos/myreponame/cypress.config.ts to wait longer.

Browsers will not fire the load event until all stylesheets and scripts are done downloading.

When this load event occurs, Cypress will continue running commands.[Learn more](https://on.cypress.io/origin)

Desired behavior

No response

Test code to reproduce

commands.ts

Cypress.Commands.add('loginByGoogleApi', () => {
	cy.log('Logging in to Google')
	cy.request({
		method: 'POST',
		url: 'https://www.googleapis.com/oauth2/v4/token',
		body: {
			grant_type: 'refresh_token',
			client_id: Cypress.env('googleClientId'),
			client_secret: Cypress.env('googleClientSecret'),
			refresh_token: Cypress.env('googleRefreshToken'),
		},
	}).then(({ body }) => {
		const { access_token, id_token } = body

		cy.request({
			method: 'GET',
			url: 'https://www.googleapis.com/oauth2/v3/userinfo',
			headers: { Authorization: `Bearer ${access_token}` },
		}).then(({ body }) => {
			cy.log(body)
			const userItem = {
				token: id_token,
				user: {
					googleId: body.sub,
					email: body.email,
					givenName: body.given_name,
					familyName: body.family_name,
					imageUrl: body.picture,
				},
			}

			window.localStorage.setItem('googleCypress', JSON.stringify(userItem))
			cy.visit('/')
		})
	})
})

test-file.cy.ts

    it.only('Send email to a user - is shown in the activity', () => {
      cy.loginByGoogleApi();
      cy.get(loc.sideNavBar.buyersPipeline).should('be.visible').click();
      cy.get(loc.pipelineBuyer.nameColumn)
        .eq(4)
        .should('be.visible')
        .click({ force: true });
      cy.get(loc.buyerDetails.basicCard).should('be.visible');
      cy.get(loc.buyerDetails.timelineSendEmailIcon)
        .should('be.visible')
        .click();
        cy.get('div[role="dialog"]').find('button.MuiButton-root').should('be.visible').click();
           })
        })

By cy.origin() by the UI:

test-file.cy.ts

    it.only('Send email to a user - is shown in the activity', () => {
      // cy.loginByGoogleApi();
      cy.get(loc.sideNavBar.buyersPipeline).should('be.visible').click();
      cy.get(loc.pipelineBuyer.nameColumn)
        .eq(4)
        .should('be.visible')
        .click({ force: true });
      cy.get(loc.buyerDetails.basicCard).should('be.visible');
      cy.get(loc.buyerDetails.timelineSendEmailIcon)
        .should('be.visible')
        .click();
        cy.get('div[role="dialog"]').find('button.MuiButton-root').should('be.visible').click();
        cy.wait(5000);
        cy.origin('https://accounts.google.com', () => {
            cy.wait(5000);
            expect(window.origin).contains('google.com')
            cy.get('input[type="email"]', {timeout: 60000}).should('be.visible', {timeout: 60000}).type('111');
        })
    });

Cypress Version

10.7.0

Node version

v14.19.1

Operating System

macOS Montery 12.3.1

Please your help! 🙏🏼
@jennifer-shehane

@chrisbreiding
Copy link
Contributor

Closing in favor of the other issue you logged: #23814

@chrisbreiding chrisbreiding closed this as not planned Won't fix, can't repro, duplicate, stale Sep 14, 2022
@chrisbreiding chrisbreiding added the type: duplicate This issue or pull request already exists label Sep 14, 2022
@chrisbreiding chrisbreiding removed their assignment Sep 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: duplicate This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

3 participants