diff --git a/lib/middleware/debug.test.ts b/lib/middleware/debug.test.ts
new file mode 100644
index 0000000000..bf7071b1ce
--- /dev/null
+++ b/lib/middleware/debug.test.ts
@@ -0,0 +1,52 @@
+import { describe, expect, it, afterAll } from '@jest/globals';
+import supertest from 'supertest';
+import server from '@/index';
+import { load } from 'cheerio';
+
+process.env.NODE_NAME = 'mock';
+
+const request = supertest(server);
+let gitHash;
+try {
+ gitHash = require('git-rev-sync').short();
+} catch {
+ gitHash = (process.env.HEROKU_SLUG_COMMIT && process.env.HEROKU_SLUG_COMMIT.slice(0, 7)) || 'unknown';
+}
+
+afterAll(() => {
+ server.close();
+});
+
+describe('debug', () => {
+ it('debug', async () => {
+ const response1 = await request.get('/test/1');
+ const etag = response1.headers.etag;
+ await request.get('/test/1').set('If-None-Match', etag);
+ await request.get('/test/2');
+ await request.get('/test/empty');
+ await request.get('/test/empty');
+
+ const response = await request.get('/');
+
+ const $ = load(response.text);
+ $('.debug-item').each((index, item) => {
+ const key = $(item).find('.debug-key').html()?.trim();
+ const value = $(item).find('.debug-value').html()?.trim();
+ switch (key) {
+ case 'Node Name:':
+ expect(value).toBe('mock');
+ break;
+ case 'Git Hash:':
+ expect(value).toBe(gitHash);
+ break;
+ case 'Request Amount:':
+ expect(value).toBe('6');
+ break;
+ case 'ETag Matched:':
+ expect(value).toBe('1');
+ break;
+ default:
+ }
+ });
+ });
+});
diff --git a/test/middleware/debug.js b/test/middleware/debug.js
deleted file mode 100644
index 13900952d9..0000000000
--- a/test/middleware/debug.js
+++ /dev/null
@@ -1,64 +0,0 @@
-process.env.NODE_NAME = 'mock';
-
-const supertest = require('supertest');
-jest.mock('request-promise-native');
-const server = require('../../lib/index');
-const request = supertest(server);
-const cheerio = require('cheerio');
-let gitHash;
-try {
- gitHash = require('git-rev-sync').short();
-} catch {
- gitHash = (process.env.HEROKU_SLUG_COMMIT && process.env.HEROKU_SLUG_COMMIT.slice(0, 7)) || 'unknown';
-}
-
-afterAll(() => {
- server.close();
-});
-
-describe('debug', () => {
- it('debug', async () => {
- const response1 = await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233');
- const etag = response1.headers.etag;
- await request.get('/test/1').set('If-None-Match', etag).set('X-Forwarded-For', '233.233.233.233');
- await request.get('/test/1').set('X-Forwarded-For', '233.233.233.234');
- await request.get('/test/2').set('X-Forwarded-For', '233.233.233.233');
- await request.get('/test/2').set('X-Forwarded-For', '233.233.233.234');
- await request.get('/test/empty').set('X-Forwarded-For', '233.233.233.233');
- await request.get('/test/empty').set('X-Forwarded-For', '233.233.233.234');
-
- const response = await request.get('/').set('X-Forwarded-For', '233.233.233.233');
-
- const $ = cheerio.load(response.text);
- $('.debug-item').each((index, item) => {
- const key = $(item).find('.debug-key').html().trim();
- const value = $(item).find('.debug-value').html().trim();
- switch (key) {
- case 'Node Name:':
- expect(value).toBe('mock');
- break;
- case 'Git Hash:':
- expect(value).toBe(gitHash);
- break;
- case 'Request Amount:':
- expect(value).toBe('8');
- break;
- case 'ETag Matched:':
- expect(value).toBe('1');
- break;
- case 'Hot Routes:':
- expect(value).toBe('3 /test/:id
');
- break;
- case 'Hot Paths:':
- expect(value).toBe('3 /test/1
2 /test/2
2 /test/empty
1 /
');
- break;
- case 'Hot Error Routes:':
- expect(value).toBe('1 /test/:id
');
- break;
- case 'Hot Error Paths:':
- expect(value).toBe('2 /test/empty
');
- break;
- }
- });
- });
-});