---
tags: hard_fork_1
---
# Highlevel Altair spec test todo
## Background
Spec test ensures client implementation is on par with python spec code. The spec test itself is generated using the python spec code. When a client implementation passes spec tests, it gives great confidence that the client code aligns with the spec and other client implementations.
## Current spec test code
They are located in:
- beacon-chain/core/blocks/spectest
- beacon-chain/core/epoch/spectest
- beacon-chain/core/state/spectest
- beacon-chain/core/helper/spectest
- proto/testing/spectest
- shared/params/spectest
- shared/bls/spectest
## Eth2 spec test repo
https://github.com/ethereum/eth2.0-spec-tests
## What changed in Altair?
1.) Test format changed to snappy
https://github.com/ethereum/eth2.0-specs/pull/2097
2.) New fork choice tests
https://github.com/ethereum/eth2.0-spec-tests/tree/master/tests/mainnet/phase0/fork_choice/get_head/pyspec_tests
3.) New Altair tests
https://github.com/ethereum/eth2.0-spec-tests/tree/master/tests/mainnet/altair
## Moving on
- Using the new test format snappy (1) and implementing the new fork choice tests (2), we can proceed forward with them right now. They are not blocked by Altair.
- Inplemeting the new altair tests (3), it's blocked by Altair state transition which Terence is working on. but it will be great to have the placeholder in place so when Altair state transition is completed, we can plug them in to test right away
## Useful code spot
- Workspace is where spec test URLs are defined:
https://github.com/prysmaticlabs/prysm/blob/develop/WORKSPACE#L228
- The testdata belongs here in the `BUILD.bazel`
https://github.com/prysmaticlabs/prysm/blob/develop/beacon-chain/core/blocks/spectest/BUILD.bazel#L29