【发布时间】:2022-08-18 15:43:26
【问题描述】:
有时我在访问应用程序的某些部分时会遇到 500 和 502 错误,我们希望能够捕获该错误并使 TestCafe 测试失败。
我们目前有这个设置https://stackoverflow.com/a/52443604/7551391,当我们调用waitForFailedRequest函数时它工作正常,它包裹了测试的内容,但我们想在夹具中或全局调用它,以便它总是看起来每次测试中出现 500 次等错误。
我的主要问题是failed_requests.waitForFailedRequest() 中的action 参数使用什么,以便在每次测试时都调用它。
failed_request_hooks.js
import EventEmitter from \'events\'
import { RequestHook } from \'testcafe\'
export class FailedRequestsLogger extends RequestHook {
constructor (requestFilterRules, responseEventConfigureOpts) {
super(requestFilterRules, responseEventConfigureOpts)
this.events = new EventEmitter()
this.failedRequestPromise = new Promise(resolve => this.events.once(\'failed-request\', resolve))
}
async onRequest (event) {
}
async onResponse (event) {
if (event.statusCode >= 500) {
this.events.emit(\'failed-request\', event.statusCode)
}
}
async waitForFailedRequest (action) {
return Promise.race([
action(),
this.failedRequestPromise.then(statusCode => Promise.reject(new Error(`Request failed with the ${statusCode} status code`)))
])
}
}
测试文件
import { ClientFunction, Selector } from \'testcafe\'
import { FailedRequestsLogger } from \'../../api/failed_request_hook\'
import data from \'../../data/data.json\'
import EditUrlRedirectsObjects from \'../../pom/sites/url_redirects/edit_redirects_page_repo\'
import GooglePreviewPageObjects from \'../../pom/sites/url_redirects/google_preview_page_repo\'
import HelperObjects from \'../../pom/helpers\'
import LoginPageObjects from \'../../pom/login/login_page_repo\'
import SitesPageObjects from \'../../pom/sites/sites_page_repo\'
import URLRedirectsPageObjects from \'../../pom/sites/url_redirects/url_redirects_page_repo\'
import WorkspaceMainNavPageObjects from \'../../pom/navigation/workspace_main_nav_page_repo\'
const failed_requests = new FailedRequestsLogger(/.*reborncf\\.com/)
fixture `sites - url redirects`
.page `${HelperObjects.get_base_url()}`
.requestHooks(failed_requests)
.beforeEach(async t => {
await LoginPageObjects.login_with_password()
await failed_requests.waitForFailedRequest()
})
标签: javascript testing automated-tests httprequest testcafe