赛普拉斯-无法识别“注销” API调用

时间:2020-06-07 17:56:02

标签: javascript ui-automation cypress

我正在为(https://www.songtrust.com)编写测试的网站具有通过API处理的注销操作。

我有一个简单的测试,部分执行以下操作:

it('Logout', () => {
  //click the left nav
  cy.get('.fa-bars').click()
  //click the logout link
  cy.get('#logout-submit').click()
})

菜单中的“注销”链接具有以下href:

<a id="logout-submit" href="#" class="action">LOGOUT</a>

单击链接将触发对http://app.songtrust.com/api/v1/user/logout/的API调用。成功响应后,站点将通过删除用户会话cookie并将其重定向到站点主页进行响应。

处理此操作的页面上的js:

$('#logout-submit').on('click', function () {
  stlib.api(stlib_api_url + 'user/logout/', {}, 'GET', go_home, go_home)
})

还有一些删除会话cookie的python代码:

def logout(self, request, **kwargs):
        self.method_check(request, allowed=['get'])
        if request.user and request.user.is_authenticated():
            logout(request)
            response = self.create_response(request, {'success': True})
            response.delete_cookie('logged_in_state')
            return response

Cypress通过以下方式处理定位标记中的href:

Request after clicking logout link

如您所见,我单击#logout-submit元素,它会正确触发对“ logout”端点的API调用。然后,URL解析为https://app.songtrust.com/dashboard/#,基本上是将哈希附加到我当前所在页面的末尾。从那时起,事情陷入僵局。不会触发预期的重定向,并且页面一直处于加载状态,直到赛普拉斯超时。我相信它可以通过在事件“卡住”之前删除cookie来成功终止会话。

当在赛普拉斯浏览器窗口中手动执行时,这当然可以正常工作。

是否有某种方法可以解决我没有考虑的问题,或者这只是我需要解决的Cypress工具中的空白?我对赛普拉斯还很陌生,因此可以提供任何指导。

0 个答案:

没有答案