import java.util.*;

public class Main {
    
    public static void main(String[] args) {
    
        int[] dx = {-1, 1, 0, 0};
        int[] dy = {0, 0, -1, 1};
        
        var sc = new Scanner(System.in);
    
        int T = Integer.parseInt(sc.next());
        var sb = new StringBuilder();
        for(int t = 0; t < T; t++){
            int n = Integer.parseInt(sc.next());
            int m = Integer.parseInt(sc.next());
            var maze = new char[n+2][m+2];
            Arrays.fill(maze[0], '#');
            Arrays.fill(maze[n+1], '#');
            for(int i = 1; i <= n; i++){
                String s = '#' + sc.next() + '#';
                maze[i] = s.toCharArray();
            }
            for(int y = 1; y <= n; y++){
                for(int x = 1; x <= m; x++){
                    if(maze[y][x] == 'B'){
                        for(int i = 0; i < 4; i++){
                            if(maze[y+dy[i]][x+dx[i]] == '.'){
                                maze[y+dy[i]][x+dx[i]] = '#';
                            }
                        }
                    }
                }
            }
            int[][] dist = new int[n+2][m+2];
            for(int i = 1; i <= n; i++){
                Arrays.fill(dist[i], -1);
            }
            var queue = new ArrayDeque<Pair>();
            dist[n][m] = 0;
            if(maze[n][m] != '#'){
                queue.add(new Pair(n, m));
            }
            while(!queue.isEmpty()){
                int cx = queue.peek().x;
                int cy = queue.poll().y;
                for(int i = 0; i < 4; i++){
                    int nx = cx + dx[i];
                    int ny = cy + dy[i];
                    if(dist[ny][nx] == -1 && maze[ny][nx] != '#'){
                        dist[ny][nx] = dist[cy][cx] +1;
                        queue.add(new Pair(ny, nx));
                    }
                }
            }
            boolean yes = true;
            label:for(int y = 1; y <= n; y++){
                for(int x = 1; x <= m; x++){
                    if((maze[y][x] == 'G' && dist[y][x] == -1) || (maze[y][x] == 'B' && dist[y][x] != -1)){
                        yes = false;
                        break label;
                    }
                }
            }
            sb.append(yes ? "Yes" : "No").append(System.lineSeparator());
        }
        System.out.print(sb);
    }
    
    static class Pair {
        int y, x;
        public Pair(int y, int x) {
            this.y = y;
            this.x = x;
        }
    }
}