fix: Implement tap.todo(), fix tap.skip.test() to create test objects, and ensure tap.only.test() works correctly
- tap.todo.test() now creates proper test objects marked as todo
- tap.skip.test() creates test objects instead of just logging
- tap.only.test() properly filters to run only marked tests
- Added markAsSkipped() method for pre-test skip marking
- All test types now contribute to accurate test counts
- Updated documentation to reflect these fixes
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
c98bd85829
commit
7aaeed0dc6
@ -215,4 +215,27 @@ The Enhanced Communication system has been implemented to provide rich, real-tim
|
|||||||
- Events are transmitted via Protocol V2's `EVENT` block type
|
- Events are transmitted via Protocol V2's `EVENT` block type
|
||||||
- Event data is JSON-encoded within protocol markers
|
- Event data is JSON-encoded within protocol markers
|
||||||
- Parser handles events asynchronously for real-time updates
|
- Parser handles events asynchronously for real-time updates
|
||||||
- Visual diffs are generated using custom diff algorithms for each data type
|
- Visual diffs are generated using custom diff algorithms for each data type
|
||||||
|
|
||||||
|
## Fixed Issues
|
||||||
|
|
||||||
|
### tap.skip.test(), tap.todo(), and tap.only.test() (Fixed)
|
||||||
|
|
||||||
|
Previously reported issues with these methods have been resolved:
|
||||||
|
|
||||||
|
1. **tap.skip.test()** - Now properly creates test objects that are counted in test results
|
||||||
|
- Tests marked with `skip.test()` appear in the test count
|
||||||
|
- Shows as passed with skip directive in TAP output
|
||||||
|
- `markAsSkipped()` method added to handle pre-test skip marking
|
||||||
|
|
||||||
|
2. **tap.todo.test()** - Fully implemented with test object creation
|
||||||
|
- Supports both `tap.todo.test('description')` and `tap.todo.test('description', testFunc)`
|
||||||
|
- Todo tests are counted and marked with todo directive
|
||||||
|
- Both regular and parallel todo tests supported
|
||||||
|
|
||||||
|
3. **tap.only.test()** - Works correctly for focused testing
|
||||||
|
- When `.only` tests exist, only those tests run
|
||||||
|
- Other tests are not executed but still counted
|
||||||
|
- Both regular and parallel only tests supported
|
||||||
|
|
||||||
|
These fixes ensure accurate test counts and proper TAP-compliant output for all test states.
|
@ -304,14 +304,16 @@ tstest --changed
|
|||||||
- Trend analysis
|
- Trend analysis
|
||||||
- Flaky test detection
|
- Flaky test detection
|
||||||
|
|
||||||
### Known Issues to Fix
|
### Recently Fixed Issues ✅
|
||||||
- **tap.todo()**: Method exists but has no implementation
|
- **tap.todo()**: Now fully implemented with test object creation
|
||||||
- **tap.skip.test()**: Doesn't create test objects, just logs (breaks test count)
|
- **tap.skip.test()**: Now creates test objects and maintains accurate test count
|
||||||
|
- **tap.only.test()**: Works correctly - when .only tests exist, only those run
|
||||||
|
|
||||||
|
### Remaining Minor Issues
|
||||||
- **Protocol Output**: Some protocol messages still appear in console output
|
- **Protocol Output**: Some protocol messages still appear in console output
|
||||||
- **Only Tests**: `tap.only.test()` exists but `--only` mode not fully implemented
|
|
||||||
|
|
||||||
### Next Recommended Steps
|
### Next Recommended Steps
|
||||||
1. Add Watch Mode - high developer value
|
1. Add Watch Mode (Phase 4) - high developer value for fast feedback
|
||||||
2. Implement Custom Reporters - important for CI/CD integration
|
2. Implement Custom Reporters - important for CI/CD integration
|
||||||
3. Fix known issues: tap.todo() and tap.skip.test() implementations
|
3. Implement performance benchmarking API
|
||||||
4. Implement performance benchmarking API
|
4. Add better error messages with suggestions
|
@ -1,56 +0,0 @@
|
|||||||
import { tap, expect } from '../../ts_tapbundle/index.js';
|
|
||||||
|
|
||||||
tap.test('should show string diff', async () => {
|
|
||||||
const expected = `Hello World
|
|
||||||
This is a test
|
|
||||||
of multiline strings`;
|
|
||||||
|
|
||||||
const actual = `Hello World
|
|
||||||
This is a demo
|
|
||||||
of multiline strings`;
|
|
||||||
|
|
||||||
// This will fail and show a diff
|
|
||||||
expect(actual).toEqual(expected);
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should show object diff', async () => {
|
|
||||||
const expected = {
|
|
||||||
name: 'John',
|
|
||||||
age: 30,
|
|
||||||
city: 'New York',
|
|
||||||
hobbies: ['reading', 'coding']
|
|
||||||
};
|
|
||||||
|
|
||||||
const actual = {
|
|
||||||
name: 'John',
|
|
||||||
age: 31,
|
|
||||||
city: 'Boston',
|
|
||||||
hobbies: ['reading', 'gaming']
|
|
||||||
};
|
|
||||||
|
|
||||||
// This will fail and show a diff
|
|
||||||
expect(actual).toEqual(expected);
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should show array diff', async () => {
|
|
||||||
const expected = [1, 2, 3, 4, 5];
|
|
||||||
const actual = [1, 2, 3, 5, 6];
|
|
||||||
|
|
||||||
// This will fail and show a diff
|
|
||||||
expect(actual).toEqual(expected);
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should show primitive diff', async () => {
|
|
||||||
const expected = 42;
|
|
||||||
const actual = 43;
|
|
||||||
|
|
||||||
// This will fail and show a diff
|
|
||||||
expect(actual).toBe(expected);
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should pass without diff', async () => {
|
|
||||||
expect(true).toBe(true);
|
|
||||||
expect('hello').toEqual('hello');
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.start({ throwOnError: false });
|
|
@ -1,23 +0,0 @@
|
|||||||
import { tap, expect } from '../../ts_tapbundle/index.js';
|
|
||||||
|
|
||||||
tap.test('should show string diff', async () => {
|
|
||||||
const expected = `line 1
|
|
||||||
line 2
|
|
||||||
line 3`;
|
|
||||||
|
|
||||||
const actual = `line 1
|
|
||||||
line changed
|
|
||||||
line 3`;
|
|
||||||
|
|
||||||
try {
|
|
||||||
expect(actual).toEqual(expected);
|
|
||||||
} catch (e) {
|
|
||||||
// Expected to fail
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.test('should pass', async () => {
|
|
||||||
expect('hello').toEqual('hello');
|
|
||||||
});
|
|
||||||
|
|
||||||
tap.start({ throwOnError: false });
|
|
Loading…
x
Reference in New Issue
Block a user