The direct product encoding of a string a ∈ { 0,1} n on an underlying domain V ⊆ ( k [ n ] ) is a function DP V ( a ) that gets as input a set S ∈ V and outputs a restricted to S . In the direct product testing problem, we are given a function F : V → { 0,1} k , and our goal is to test whether F is close to a direct product encoding—that is, whether there exists some a ∈ { 0,1} n such that on most sets S , we have F ( S )=DP V ( a )( S ). A natural test is as follows: select a pair ( S , S ′)∈ V according to some underlying distribution over V × V , query F on this pair, and check for consistency on their intersection. Note that the preceding distribution may be viewed as a weighted graph over the vertex set V and is referred to as a test graph. The testability of direct products was studied over various domains and test graphs: Dinur and Steurer (CCC’14) analyzed it when V equals the k -th slice of the Boolean hypercube and the test graph is a member of the Johnson graph family. Dinur and Kaufman (FOCS’17) analyzed it for the case where V is the set of faces of a Ramanujan complex, where in this case ∣ V ∣= O k ( n ). In this article, we study the testability of direct products in a general setting, addressing the question: what properties of the domain and the test graph allow one to prove a direct product testing theorem? Towards this goal, we introduce the notion of coordinate expansion of a test graph. Roughly speaking, a test graph is a coordinate expander if it has global and local expansion, and has certain nice intersection properties on sampling. We show that whenever the test graph has coordinate expansion, it admits a direct product testing theorem. Additionally, for every k and n , we provide a direct product domain V ⊆ ( k n ) of size n , called the sliding window domain , for which we prove direct product testability.